我正在尝试在mysql中搜索字符串的完全匹配。字符串是'nrew'。但是当我进行下面的查询时,我仍然得到一个结果:
SELECT UserID FROM sys_users WHERE UserID='NREW'
SELECT UserID FROM sys_users WHERE UserID='NrEw'
请帮忙。
答案 0 :(得分:22)
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW'
答案 1 :(得分:8)
MySQL用于进行比较的默认排序规则不区分大小写。您需要指定区分大小写的排序规则或二进制文件。您可以在创建列时或在查询中执行此操作。
例如:
SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin
正确的整理取决于您的字符集。对于默认的latin1
,您可以使用latin1_bin
。对于utf8
,utf8_bin
。
答案 2 :(得分:5)
答案 3 :(得分:3)
一种方法是使用LIKE BINARY
代替=
:
SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew';
答案 4 :(得分:1)
这是尝试:http://www.devx.com/tips/Tip/13043
Select UserID from sys_users where convert(varbinary, UserID) = convert(varbinary, 'NREW')
或尝试COLLATE
http://aspadvice.com/blogs/ssmith/archive/2007/09/30/Case-Sensitive-or-Insensitive-SQL-Query.aspx