MySQL BIT_LENGTH()関数はマルチバイトで安全かどうか?
LENGTH()関数と同様に、MySQL BIT_LENGTH()関数はマルチバイトセーフ関数ではありません。 CHAR_LENGTH()やCHARACTER_LENGTH()などのマルチバイトセーフ関数と、特にUnicodeに関連するBIT_LENGTH()関数の結果の違いは、ほとんどの文字が2バイトでエンコードされているかUTFに関連していることを知っています。 -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で文字列を変換すると、以下に示すように、Unicodeでは1文字が2バイトかかるため、結果は112ではなく224になります-
mysql> Select BIT_LENGTH(@A); +----------------+ | BIT_LENGTH(@A) | +----------------+ | 224 | +----------------+ 1 row in set (0.00 sec)
-
MySQLの列ではなく行にMAX関数はありますか?
はい、MySQLのGREATEST()を使用して、(列ではなく)行から最大値をチェックできます。まずテーブルを作成しましょう- mysql> create table DemoTable ( Value1 int, Value2 int, Value3 int ); Query OK, 0 rows affected (0.58 sec) 挿入コマンド-を使用してテーブルにレコードを挿入します mysql> insert into DemoTable
-
MySQLで動作しないことを除いて?
MySQL以外では使用できません。 NOT IN演算子を使用して、同じ結果を得ることができます。まずテーブルを作成しましょう- mysql> create table DemoTable1 ( Number1 int ); Query OK, 0 rows affected (0.71 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1 va