使MySQL IN子句区分大小写

时间:2012-11-12 23:50:33

标签: mysql sql case-sensitive in-clause string-search

有谁知道如何使IN子句以区分大小写的方式运行?我已经看到COLLATE可以和LIKE一起用于字符串搜索,但我不知道它是否或如何与IN一起使用。例如,我想做类似

的事情
SELECT * FROM pages_table WHERE topic IN ('Food','NightLife','Drinks')

我希望它返回主题为“食物”的页面,而不是那些主题为“食物”的页面,这是当前在此查询中发生的事情。感谢。

2 个答案:

答案 0 :(得分:9)

您可以使用BINARY运算符。类似的东西:

SELECT *
FROM pages_table
WHERE CAST(topic AS BINARY) IN ('Food','NightLife','Drinks');

SQL Fiddle Demo

答案 1 :(得分:7)

您可以像在其他示例中看到的那样实际使用它:

SELECT *
FROM pages_table
WHERE CAST(topic AS CHAR CHARACTER SET latin1)
        COLLATE latin1_general_cs IN ('Food','NightLife','Drinks')

这会将字符集更改为支持区分大小写的字符集,然后整理列(您可能不必执行此操作,具体取决于您自己的字符编码)。