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も返されます。 バイトではなく文字数を返します。