sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのDATALENGTH()とは何ですか?

    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を返します 。


    1. SQL Serverでのテーブルパーティションの切り替え:ウォークスルー

    2. MySQLで週次アクティブユーザー(WAU)を計算する方法

    3. OracleSQLDeveloper-ドロップされたテーブルをリカバリする方法

    4. SQLで数値をフロア化する方法