我有一个名为table_1
的MySQL表,该表具有类型为col_1
的名为TEXT
的列。我正在尝试使用此语句查询具有特定值的行,但未返回任何数据。SELECT * FROM table _1 WHERE col_1 = '1325'
但是,当我使用此语句时,我确实获得了数据。SELECT * FROM table_1 WHERE col_1 LIKE '%1325%'
如何获得第一条陈述?
最佳答案
如果带有WHERE col_1 LIKE '%1325%'
的选择带回一个看起来像1325
的值,但是WHERE col_1 = '1325'
不?
那可能是因为看不见的字符。
例如,如果col_1的值为“ 1325”。
由于存在额外的空间,该值不等于“ 1325”。
但是它确实包含'1325',因此喜欢的人会找到它。
不注意到不可见的内容很容易。
您可以做的是TRIM值,以便在与=
比较之前删除空格。
SELECT * FROM table_1 WHERE TRIM(col_1) = '1325';
请注意,默认的TRIM或RTRIM仅删除空格。
为了使它适用于其他空白字符,SQL会变得更长一些。
SELECT * FROM table_1
WHERE TRIM(Replace(Replace(Replace(col_1,'\t',''),'\n',''),'\r','')) = '1325';
而且,如果您想获得视觉证据,这是否是由不可见的空格引起的?
然后使用
LIKE
,并在列的开头和结尾使用CONCAT
。然后,在结果中将很容易注意到空格。select CONCAT('[',col_1,']') AS Test, t.* from table_1 t where col_1 like '%1325%';
您可以here对其进行测试