2

MySql にテスト テーブルがあるとします。

CREATE TABLE `test_table` (
    `_id` INT(10) UNSIGNED NOT NULL,
    `testfield` TEXT NULL COLLATE 'utf8_unicode_ci',
    PRIMARY KEY (`_id`)
)
COLLATE='utf8_unicode_ci'
ENGINE=MyISAM;

単一の行が含まれています。

INSERT INTO `test_table` (`testfield`) VALUES ('testValue');

次に、このクエリを実行すると:

SELECT * FROM `test_table` WHERE `testField` = 'testValue';

またはこれ:

SELECT * FROM `test_table` WHERE `testField` = 'testValue ';

またはこれさえ:

SELECT * FROM `test_table` WHERE `testField` = 'testValue  ';

私は常に同じ結果を受け取ります。それはこの単一の行ですが、この行は最初のケースでのみ必要です。

mysql が末尾の空白スペースを切り捨てるのはなぜ'testVaue 'ですか? そして、主な質問は、そのような行動をなくすにはどうすればよいですか?

4

3 に答える 3

1

なぜ正確に WHERE をトリミングするのかわかりません (それのポイントは何ですか?)。TEXTフィールドをバイナリ( )にすることで修正できるため、おそらくバイナリなどと関係がありますBLOB

于 2012-07-27T16:55:48.670 に答える
1

文書化された動作です: http://bugs.mysql.com/bug.php?id=5412。TEXT フィールドは、比較のために CHAR/VARCHAR と同じように扱われます。

于 2012-07-27T16:56:07.980 に答える
1

MySQL が文字列を比較すると、すべての末尾のスペースが削除されます ('x ' = 'x'は true です)。
詳細については、この質問を参照してください。

于 2012-07-27T17:01:34.693 に答える