如何在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。对于utf8utf8_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中搜索确切的字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mysql 数据库中搜索包含字符串中字母的字段

如何在MYSQL存储过程中的字符串动态列表中搜索字符串

你如何在MySql中实际搜索反引号?

如何使用 php 在 android 的 mysql 数据库中搜索此字符串是不是作为值存在?

如何使用 PHP 从 MySql 数据库中获取数据

如何使 iMacro 仅在 TXT 属性中找到确切的字符串