【发布时间】:2013-11-14 14:09:15
【问题描述】:
我没有找到类似的问题可能是因为我没有找到正确的单词(英语不是我的第一语言)
问题
我有一个 varchar 值,其末尾有一个空格:"opt-193-381-markets ",当我使用 没有 空格的值执行 SELECT 时,它返回相同的结果.这就像 MySQL 正在修剪 WHERE 中的值
表定义:
mysql> desc message;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| FileId | int(11) | NO | PRI | 0 | |
| MessageKey | varchar(100) | NO | PRI | | |
| NumericKey | tinyint(1) | NO | | 0 | |
| IsObsolete | tinyint(4) | YES | MUL | NULL | |
| notes | text | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
例子:
mysql> SELECT * FROM message WHERE MessageKey = "opt-193-381-markets";
+--------+----------------------+------------+------------+-------+
| FileId | MessageKey | NumericKey | IsObsolete | notes |
+--------+----------------------+------------+------------+-------+
| 304 | opt-193-381-markets | 0 | 1 | NULL |
| 337 | opt-193-381-markets | 0 | 1 | NULL |
+--------+----------------------+------------+------------+-------+
请注意,MessageKey 的值末尾有空格,我只是要求没有空格的值。
mysql> SELECT * FROM message WHERE MessageKey = "opt-193-381-markets ";
+--------+----------------------+------------+------------+-------+
| FileId | MessageKey | NumericKey | IsObsolete | notes |
+--------+----------------------+------------+------------+-------+
| 304 | opt-193-381-markets | 0 | 1 | NULL |
| 337 | opt-193-381-markets | 0 | 1 | NULL |
+--------+----------------------+------------+------------+-------+
再增加一个空格
mysql> SELECT * FROM message WHERE MessageKey = "opt-193-381-markets ";
+--------+----------------------+------------+------------+-------+
| FileId | MessageKey | NumericKey | IsObsolete | notes |
+--------+----------------------+------------+------------+-------+
| 304 | opt-193-381-markets | 0 | 1 | NULL |
| 337 | opt-193-381-markets | 0 | 1 | NULL |
+--------+----------------------+------------+------------+-------+
转义
mysql> SELECT * FROM message WHERE MessageKey = "opt-193-381-markets\ \ ";
+--------+----------------------+------------+------------+-------+
| FileId | MessageKey | NumericKey | IsObsolete | notes |
+--------+----------------------+------------+------------+-------+
| 304 | opt-193-381-markets | 0 | 1 | NULL |
| 337 | opt-193-381-markets | 0 | 1 | NULL |
+--------+----------------------+------------+------------+-------+
我也试过用单引号'opt-193-381-markets'
问题
为什么我无法搜索到MessageKey 的确切值?
谢谢
【问题讨论】:
-
尝试使用单引号而不是双引号
'opt-193-381-markets ' -
我试过了,还是一样
-
所以...现在我会调查一下。
-
有趣,以前从未注意到这一点。
-
这个列/表的字符集是什么?