mysql - SQL 不查询文本数据

标签 mysql 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 时我工作正常,但答案字段不工作。谢谢!

最佳答案

显然,"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/

相关文章:

MYSQL COUNT 结果并在按列分组时对它们进行 AVG

mysql - FUNCTION 数据库名.SHA2 不存在

Mysql:最后用零对聚合进行升序排序

sql - 两个日期之间的工作日数

sql - postgreSQL 斐波那契数列 - 查询没有结果数据的目的地

MySQL 从结果中获取平均值,平均值必须在 8 到 12 之间

c# - 帮助处理用户关系

java - 使用java从外部网络连接MySQL

mysql - Jmeter测试MyISAM/InnoDB

mysql - 如何获取mysql中存储为数组的字符串数据