【发布时间】:2011-10-01 17:37:38
【问题描述】:
我正在尝试在 mysql 中搜索字符串的完全匹配。字符串是'nrew'。但是当我做下面的查询时,我仍然得到一个结果:
SELECT UserID FROM sys_users WHERE UserID='NREW'
SELECT UserID FROM sys_users WHERE UserID='NrEw'
请帮忙。
【问题讨论】:
标签: mysql collation case-sensitive
我正在尝试在 mysql 中搜索字符串的完全匹配。字符串是'nrew'。但是当我做下面的查询时,我仍然得到一个结果:
SELECT UserID FROM sys_users WHERE UserID='NREW'
SELECT UserID FROM sys_users WHERE UserID='NrEw'
请帮忙。
【问题讨论】:
标签: mysql collation case-sensitive
【讨论】:
一种方法是使用LIKE BINARY 而不是=:
SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew';
【讨论】:
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW'
【讨论】:
MySQL 用于进行比较的默认排序规则不区分大小写。您需要指定区分大小写的排序规则或二进制文件。您可以在创建列时执行此操作,也可以在查询中执行此操作。
例如:
SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin
正确的排序规则取决于您的字符集。对于latin1,默认可以使用latin1_bin。对于utf8,utf8_bin。
【讨论】:
试试这个:http://www.devx.com/tips/Tip/13043
Select UserID from sys_users where convert(varbinary, UserID) = convert(varbinary, 'NREW')
或尝试整理
http://aspadvice.com/blogs/ssmith/archive/2007/09/30/Case-Sensitive-or-Insensitive-SQL-Query.aspx
【讨论】: