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

MySQLで同等のDATALENGTH()とは何ですか?

    SQL Serverを長期間使用している場合は、Datalength()に遭遇した可能性があります。 働き。この関数は、式を表すために使用されるバイト数を返します。

    ただし、MySQLに移行した場合は、同じことを行う関数を探している可能性があります。

    MySQLでは、Length() 関数は基本的にT-SQLのDatalength()と同じことを行います 関数はSQLServer(およびAzure)で実行されます。 MySQLのLength() 関数は、バイト単位で測定された文字列の長さを返します。

    実例をいくつか示します。

    SQL Server

    SQL Serverの基本的な例(T-SQLを使用)は次のとおりです。

    SELECT DATALENGTH('Cat') AS Datalength;
    

    結果:

    Datalength
    ----------
    3         
    

    MySQL

    MySQLの同等のクエリは次のとおりです。

    SELECT LENGTH('Cat') AS Length;
    

    結果:

    +--------+
    | Length |
    +--------+
    |      3 |
    +--------+
    

    両方の測定バイト

    しかし、最も重要なのは、両方の関数がバイトを測定することです。 、文字ではありません 。したがって、データがUnicode文字列として格納されている場合、バイト数は文字数の2倍になります。これは、Unicode文字列が1文字あたり2バイトを使用するためです。

    以下は、SQL Server、次にMySQLでUnicode列に対して基本的に同じクエリを実行する例です。

    SQL Server

    SELECT DATALENGTH(ArtistName) AS DataLength
    FROM Artists 
    WHERE ArtistName = 'Lit';
    

    結果:

    DataLength
    ----------
    6         
    

    MySQL

    SELECT LENGTH(ArtistName) AS Length
    FROM Artists
    WHERE ArtistName = 'Lit';
    

    結果:

    +--------+
    | Length |
    +--------+
    |      6 |
    +--------+
    

    これらの例が6を返す理由は、データベースで使用されているデータ型が原因であることに注意してください。データがUnicodeとして保存されていない場合、どちらの例でも3が返される可能性があります。

    文字とバイト

    SQL Serverの例では、Len()を使用した場合 代わりに関数を使用すると、3が返されます。これはLen()が原因です。 バイト数ではなく、文字数を返します。

    MySQLの場合も同様に、Char_Length()を使用した場合 関数の場合、Char_Length()であるため、3も返されます。 バイトではなく文字数を返します。


    1. ビューで使用されているエイリアスの実際の列名を見つけますか?

    2. MySQLレプリケーションのフェイルオーバーの概要-101ブログ

    3. IAMポリシーテンプレートを使用したAWSでのScaleGridパーミッションの設定

    4. Oracleの正規表現からグループを抽出するにはどうすればよいですか?