[SQL Server] LEN関数とDATALENGTH関数

inno
2013-12-05 20:37 8725 0
[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関数についても理解しておきましょう~

コメント