タグ

ブックマーク / bleis-tift.hatenablog.com (2)

  • NULLIF 関数の実用的な使い方 - ぐるぐる~

    NULLIF 関数って動作の説明は多いけど、それを何に使えばいいのかってあんまり理解されてないんじゃないかと思う。 ってことで、NULLIF 関数の実用的な使い方をいくつか紹介する。 NULLIF 関数の動作 まずは、NULLIF 関数の動作から。 NULLIF 関数は引数を 2 つとって、引数が等しい場合に NULL を返し、異なる場合に第一引数を返すだけの、動作自体はかなり簡単な関数。 例えば、 SELECT col_a, col_b, NULLIF(col_a, col_b) FROM SomeTable; これを実行すると、次のような結果が得られる。 col_a col_b NULLIF(col_a, col_b) 10 10 NULL 10 0 10 0 10 0 NULL NULL NULL また、プログラマのためのSQL 第2版では、CASE 式を用いて、 NULLIF(V1

    NULLIF 関数の実用的な使い方 - ぐるぐる~
    kootaro
    kootaro 2009/07/14
  • SQL Server の LEN 関数は文字列の長さを正確に取得出来ない・・・だけじゃない - ぐるぐる~

    サロゲート文字*1を含む文字列だと、LEN 関数正しい文字列長を取得出来ない。 -- このSQLを実行すると、1ではなく2が返される SELECT LEN(N'𠮷'); 注意:環境によっては□が表示されるかもしれないけど、実際はつちよし (吉の上が士じゃなくて土) です。 以下、□が現れたら脳内変換するか、表示できる環境で見るかしてくだしあ。 で、実は問題は LEN 関数だけじゃなくて、他の文字列関数や、文字列型にまで及ぶ。 文字列型 例えば、nchar(1) 型や nvarchar(1) の列には「𠮷」を格納することは出来ないし*2、nchar(1) 型や nvarchar(1) 型の変数に代入すると、後ろ 1 バイト分が切り詰められ、結果文字化けする。 だから例えば、「10 文字あれば十分」と判断したとしても、安直に nvarchar(10) なんてしてはいけないということ。 もし

    SQL Server の LEN 関数は文字列の長さを正確に取得出来ない・・・だけじゃない - ぐるぐる~
    kootaro
    kootaro 2009/07/11
  • 1