正しい単語が見つからないためか、同様の質問が見つかりませんでした (英語は私の母国語ではありません)。
問題
varchar
最後に空白がある値があります。空白のない値"opt-193-381-markets "
で a を実行すると、同じ結果が返されます。MySQLが値をトリミングしているようですSELECT
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 |
+--------+----------------------+------------+------------+-------+
スペースをもう 1 つ追加する
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
ですか?
ありがとう