首页 > 解决方案 > SQL 不查询文本数据

问题描述

我正在尝试查询表中的数字和字符串,但它不起作用。我知道这是一个简单的问题,但我还是 SQL 新手,我只是看不出我的查询有什么问题。

这是表格:

CREATE TABLE question_answer(
    sample_id VARCHAR(10),
    question_id INT,
    question VARCHAR(255),
    answer VARCHAR(20)
);

数据如下所示:

sample_id question_id answer
001       1           Yes
002       1           No
003       1           Yes
...

和我的查询:

SELECT sample_id, question_id, answer
FROM question_answer
WHERE question_id = 1 AND answer = 'Yes' 
;

当我询问 question_id 时,我工作正常,但答案字段不起作用。谢谢!

标签: mysqlsql

解决方案


显然,“是”不是你想的那样。我会首先尝试匹配:

WHERE question_id = 1 AND answer LIKE '%Yes%' 

如果这不起作用,那么:

WHERE question_id = 1 AND answer LIKE '%Y%e%s%' 

找到匹配项后,您可以尝试找出问题所在。以下是三个常见问题:

  • 尾随/前导空格
  • 相似字符(例如零和大写 O)
  • 隐藏字符(通常来自非 ASCII 字符集)

唉,MySQL 没有regexp_replace(). 如果这只是一个字符,你可以找到它。例如,如果它位于字符串的开头:

select @char := left(answer, 1)
from question_answer
where answer regexp '^[^a-zA-Z0-9 ]')
limit 1;

这将设置@char为字符的值。您可以在 an 中使用它update来从字符串中删除此类字符。


推荐阅读