none
照合順序と"-"(半角ハイフン)について RRS feed

  • 質問

  • SQL Server 2008 で既定の照合順序(Japanese_CI_AS)を使用していますが、
    "-"(半角ハイフン)を含む文字の並べ替えについて質問させて頂きます。

    以下のデータがある場合に、SELECT文で①と③が連続して返されるようにすることは可能でしょうか?

    CREATE TABLE #TmpTable (col1 VARCHAR(3))
    
    
    
    INSERT INTO #TmpTable (col1) VALUES ('ア-カ')	--①
    
    INSERT INTO #TmpTable (col1) VALUES ('アキ')	--②
    
    INSERT INTO #TmpTable (col1) VALUES ('ア-ク')	--③
    
    INSERT INTO #TmpTable (col1) VALUES ('アケ')	--④
    
    
    
    SELECT * FROM #TmpTable ORDER BY col1
    
    
    
    DROP TABLE #TmpTable
    
    
    
    


    ①と③の2文字目は半角ハイフンです。
    この半角ハイフンを"ー"(半角長音)とした場合は、①③②④の順で返されますが、
    上の場合は、①②③④の順で返されます。

    半角ハイフンでも半角長音でも同じ結果が返されればベストなのですが、
    少なくとも半角ハイフンでも①と③が連続するように、
    照合順序の設定等でできればと思っています。

    よろしくお願いします。

    2011年3月4日 2:54

回答

  • こんにちは。
    照合順序 "Japanese_BIN" により、 MMTRS さんの期待通りの結果になることを確認しました。

    ----------------------------------------
    SELECT * FROM #TmpTable ORDER BY col1

    col1
    ----
    ア-カ
    ア-ク
    アキ
    アケ

    (4 行処理されました)
    ----------------------------------------

    もし、サーバーの照合順序を変更することについて抵抗があるようであれば、
    以下のように該当のテーブルのみ、列の照合順序を変更されてみてはいかがでしょうか?

    create table #TmpTable (col1 varchar(3) collate Japanese_BIN)

    参考情報
    - 列の照合順序の設定と変更
     <http://msdn.microsoft.com/ja-jp/library/ms190920.aspx>

     

    • 回答としてマーク MMTRS 2011年3月14日 5:33
    2011年3月4日 5:24
  • 照合順序は、クエリの項目に指定することも出来ます。(WHERE条件やGROUP BY句、ORDER BY句など)

    SELECT * FROM #TmpTable ORDER BY col1 COLLATE Japanese_BIN

    でいけると思います。

     


    ---------------------------------
    Infospire Kayano
    • 回答としてマーク MMTRS 2011年3月14日 5:33
    2011年3月4日 8:01

すべての返信

  • こんにちは。
    照合順序 "Japanese_BIN" により、 MMTRS さんの期待通りの結果になることを確認しました。

    ----------------------------------------
    SELECT * FROM #TmpTable ORDER BY col1

    col1
    ----
    ア-カ
    ア-ク
    アキ
    アケ

    (4 行処理されました)
    ----------------------------------------

    もし、サーバーの照合順序を変更することについて抵抗があるようであれば、
    以下のように該当のテーブルのみ、列の照合順序を変更されてみてはいかがでしょうか?

    create table #TmpTable (col1 varchar(3) collate Japanese_BIN)

    参考情報
    - 列の照合順序の設定と変更
     <http://msdn.microsoft.com/ja-jp/library/ms190920.aspx>

     

    • 回答としてマーク MMTRS 2011年3月14日 5:33
    2011年3月4日 5:24
  • 照合順序は、クエリの項目に指定することも出来ます。(WHERE条件やGROUP BY句、ORDER BY句など)

    SELECT * FROM #TmpTable ORDER BY col1 COLLATE Japanese_BIN

    でいけると思います。

     


    ---------------------------------
    Infospire Kayano
    • 回答としてマーク MMTRS 2011年3月14日 5:33
    2011年3月4日 8:01
  • tagaraさん、IS Kayanoさん、ありがとうございます。
    返信遅くなり申し訳ないです。

    こちらでも、Japanese_BINを使用して期待の結果が返されることを確認できました。
    必要に応じてJapanese_BINを使用する方向で進めていきたいと思います。

    ありがとうございました。

    2011年3月14日 5:33