[SQL Server] LEN関数とDATALENGTH関数
LEN関数とDATALENGTHは指定された文字列の文字数を返します。
でも、少し差があります。
LEN関数は末尾の空白を除いた文字数を返します。
DATALENGTH関数はバイト数を表示します。
説明だけでは難しいですよね。
では、下記の例文と結果をみましょう~
SELECT LEN('日本') AS Data1, DATALENGTH('日本') AS Data2
実行結果
LEN関数は2, DATALENGTH関数は4を返しています。
日本語の漢字の場合、1文字が2バイトです。
英語の場合は1文字が1倍とです。
では、英語の場合はどうでしょう~
SELECT LEN('japan') AS Data1, DATALENGTH('japan') AS Data2
実行結果
同じく5を返しています。
上記でも説明したとおり、LEN関数は文字数、DATALENGTH関数はバイト数を返します。
では、また下記のSQLをみましょう。
今回は後ろに空白を入れてみます。
SELECT LEN('日本 ') AS Data1, DATALENGTH('日本 ') AS Data2
実行結果
LEN関数の場合、末尾の空白は除いて文字数を返しますので、2を。。
DATALENGTH関数の場合、末尾の空白もバイト数に含まれますので5を返します。
では、空白が半角ではなく全角の場合はどうなるか確認しましょう。
SELECT LEN('日本 ') AS Data1, DATALENGTH('日本 ') AS Data2
実行結果
全角の空白の場合、空白に認識されず一つの文字として認識されるため上記のような結果になりました。
LEN関数がDATALENGTH関数に比べてよく使われていますが、
DATALENGTH関数についても理解しておきましょう~