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 运算符不使用字符串值的主要内容,如果未能解决你的问题,请参考以下文章
比较字符串和 strftime 值时,Python in 运算符未按预期工作[重复]