我正在尝试查询表中的数字和字符串,但无法正常工作。我知道这是一个简单的问题,但我对 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 时我工作正常,但答案字段不工作。谢谢!
最佳答案
显然,"is"并不是您想象的那样。我将从尝试完全匹配开始:
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
设置为字符的值。您可以在 update
中使用它来从字符串中删除此类字符。
关于mysql - SQL 不查询文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53214869/