LENGTH() 関数と同様、MySQL BIT_LENGTH() 関数はマルチバイト安全な関数ではありません。ご存知のとおり、CHAR_LENGTH() や CHARACTER_LENGTH() などのマルチバイト セーフ関数と BIT_LENGTH() 関数の結果の違いは、ほとんどの文字が 2 バイトでエンコードされるか、UTF に関連する Unicode に特に関係します。 -8 (バイト数は異なります)。これは、以下の例で示されています。-
mysql> Select BIT_LENGTH('tutorialspoint'); +------------------------------+ | BIT_LENGTH('tutorialspoint') | +------------------------------+ | 112 | +------------------------------+ 1 row in set (0.00 sec)
上記の結果セットは、文字列「tutorialspoint」のビット長がまだ Unicode 文字に変換されていないため、112 であることを示しています。次のクエリは、これを Unicode 文字 -
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
に変換します。文字記号を Unicode に変換した後、結果は 224 ではなく 112 になります。これは、以下に示すように、Unicode では 1 文字が 2 文字を占有するためです。 -
rreeee以上がMySQL BIT_LENGTH() 関数はマルチバイト安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。