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