我想在like
子句中使用select
过滤我的列,MySQL中的默认like
不区分大小写,但我希望它区分大小写。怎么做?
我想要这个查询:
select * from my_table where column1 like '%abc%'
和这个查询:
select * from my_table where column1 like '%Abc%'
给出不同的结果。
答案 0 :(得分:9)
默认字符集和排序规则为
latin1
和latin1_swedish_ci
,因此非二进制字符串比较默认情况下不区分大小写。这意味着,如果您使用col_name LIKE 'a%'
进行搜索,则会获得以A
或a
开头的所有列值。 要使此搜索区分大小写,请确保其中一个操作数具有区分大小写或二进制排序规则。例如,如果要比较两个都具有latin1
的列和字符串字符集,您可以使用COLLATE
运算符使任一操作数具有latin1_general_cs
或latin1_bin
排序规则:col_name COLLATE latin1_general_cs LIKE 'a%' col_name LIKE 'a%' COLLATE latin1_general_cs col_name COLLATE latin1_bin LIKE 'a%' col_name LIKE 'a%' COLLATE latin1_bin
MySQL :: MySQL 5.6 Reference Manual :: C.5.5.1 Case Sensitivity in String Searches(强调补充)