2012-07-27 69 views
2

假设,我们有一个测试表在MySQL的:为什么在sql-query字段中尾随空白会产生“错误”结果?

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 '的末尾截断空格?主要问题是,我应该如何消除这种行为?

回答

1

当MySQL比较字符串时,它会修剪所有尾随空格('x ' = 'x'为true)。
有关更多信息,请参见this question

1

我不知道为什么它修整了哪里(它有什么意义?)。它可能与二进制的东西等,因为你可以通过使您的TEXT字段二进制(BLOB)修复它。

相关问题