SQL Server(およびAzure)では、T-SQL DATALENGTH()
関数は、式を表すために使用されるバイト数を返します。
例:
SELECT DATALENGTH('Lit');
結果:
3
この場合、文字列Lit
には3バイトが含まれます。 。
ただし、これは単純な例です。データタイプによって、結果は大きく異なる場合があります。
上記の例では、Lit
という単語に3バイトあることがわかりました。 。これは、文字列に含まれる文字の正確な数でもあります。ただし、データベースの列から同じ単語を返すと、異なる結果が得られる可能性があります。例:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
結果:
ArtistName DataLength ---------- ---------- Lit 6
この場合、データ長は6です。
この理由は、この特定のデータベースでは、列に nvarchar(255)があるためです。 データ・タイプ。 nvarchar データ型はUnicode文字列であり、1文字あたり2バイトを格納します(これにより、データ長が実質的に2倍になります)。列が代わりにvarchar(255)を使用していた場合 データ長は3になります。ただし、「 char(25)」と表示されている場合は、 文字列のデータ長は25になります。
また、以前は char(25)だった場合 しかし、その後、 varchar(255)に変換されました それでも255のデータ長があります。
ただし、すべての場合において、LEN()
関数は3を返します。
トレーリングブランク
DATALENGTH()
関数は、末尾の空白をカウントします(たとえば、文字列の最後のスペース、タブ、キャリッジリターンなど)。
例:
SELECT DATALENGTH('Lit');
結果:
4
この例では、文字列の最後にスペースを追加しただけです。これは、LEN()
のもう1つの違いです。 およびDATALENGTH()
。
LEN()
の例を見ることができます およびDATALENGTH()
LEN()
に並べて vs DATALENGTH()
。
リターンタイプ
DATALENGTH()
関数はintのデータ型を返します 、式が varchar(max)でない限り 、 nvarchar(max) またはvarbinary(max) 、この場合、 bigintを返します 。