如何在mysql中搜索确切的字符串
Posted
技术标签:
【中文标题】如何在mysql中搜索确切的字符串【英文标题】:how to search for exact string in mysql 【发布时间】:2011-10-01 17:37:38 【问题描述】:我正在尝试在 mysql 中搜索字符串的完全匹配。字符串是'nrew'。但是当我做下面的查询时,我仍然得到一个结果:
SELECT UserID FROM sys_users WHERE UserID='NREW'
SELECT UserID FROM sys_users WHERE UserID='NrEw'
请帮忙。
【问题讨论】:
【参考方案1】:你可以使用关键字Binary,
SELECT UserID FROM sys_users WHERE BINARY UserID='nrew'
参考here
【讨论】:
【参考方案2】:一种方法是使用LIKE BINARY
而不是=
:
SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew';
【讨论】:
【参考方案3】:SELECT UserID FROM sys_users WHERE BINARY UserID='NREW'
【讨论】:
作为附加说明,如果您匹配唯一的用户帐户名称,请确保您也使用 BINARY,否则,像 aimé.smith 和 aime.smith 这样的名称被假定为相同的值,无论特殊字符的区别。【参考方案4】:MySQL 用于进行比较的默认排序规则不区分大小写。您需要指定区分大小写的排序规则或二进制文件。您可以在创建列时执行此操作,也可以在查询中执行此操作。
例如:
SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin
正确的排序规则取决于您的字符集。对于latin1
,默认可以使用latin1_bin
。对于utf8
,utf8_bin
。
【讨论】:
【参考方案5】:试试这个: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
【讨论】:
以上是关于如何在mysql中搜索确切的字符串的主要内容,如果未能解决你的问题,请参考以下文章