SQLServerのLEN関数は文字列の後ろの空白は無視する

SQLServerのT-SQLにあるLEN関数は文字列の後ろの空白は無視して長さを返します。

ちょっとした知識不足で不具合を生んでしまうところだったのでメモとして書き留めておきます。

スポンサーリンク

SQLServerのLEN関数は文字列の後ろの空白は無視する

SQLserveには文字数をカウントしてくれる関数LENが用意されているのですが、この関数、文字列の末尾の空白を除いた文字数を返します。

例えば

の戻り値は「3」ですし、

の戻り値は「5」です。

でも

の戻り値は「3」です。

なぜこのような仕様になっているのか不明ですが、最後の空白は意味のなさないものという扱いか、CHAR型でとった文字列には宣言された大きさに満たない文字列の最後には空白がセットされるということで、それでも正しく文字数を返すためにそうなったのでしょう。

まとめ

知っていれば大きな問題にはなりませんが、知らないとちょっとしたわかりにくい不具合を埋め込んでしまいます。

以上、SQLServerのLEN関数は文字列の後ろの空白は無視するでした。

タイトルとURLをコピーしました