IN 运算符不使用字符串值

Posted

技术标签:

【中文标题】IN 运算符不使用字符串值【英文标题】:IN operator not working with string values 【发布时间】:2016-03-25 21:16:21 【问题描述】:

我正在使用以下查询来过滤表中的记录:

SELECT * FROM teacher_info WHERE teaching_locations in ('Salt Lake City');

即使我在teaching_locations 列的表中存储了以下值,它也会返回一个空结果:newyork,Salt Lake City,los angeles

我尝试过使用其他值,并且它可以与其他值一起正常工作,但中间有空格的值除外。例如,如果列值为“newyork”,则查询工作正常。

【问题讨论】:

您的查询对我来说很好。 sqlfiddle.com/#!9/2f11a/2 有一个相关问题可能对您有用 - useful question 当您在单个列中存储多个值时会发生这种情况——这不是关系方式。使用联结表,您的查询会更简单、更快捷。 【参考方案1】:

使用 FIND_IN_SET() 代替 IN 运算符。

试试这个:

SELECT * 
FROM `teacher_info` 
WHERE FIND_IN_SET('Salt Lake City', teaching_locations);

【讨论】:

如果有多个值怎么办?例如我想在 Teaching_locations 中找到新泽西、纽约和盐湖城

以上是关于IN 运算符不使用字符串值的主要内容,如果未能解决你的问题,请参考以下文章

元组数据结构支持 in 运算符吗

比较字符串和 strftime 值时,Python in 运算符未按预期工作[重复]

Mongoose:'投射到嵌入的路径值失败。无法使用“in”运算符搜索“_id”

MySQL数据库:运算符

MySQL数据类型 - JSON数据类型

R - 使用匹配运算符时保留顺序 (%in%)