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'为真)。
有关更多信息,请参阅此问题

于 2012-07-27T17:01:34.693 回答