【问题标题】:how to search for exact string in mysql如何在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'

请帮忙。

【问题讨论】:

    标签: mysql collation case-sensitive


    【解决方案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

          【讨论】:

            猜你喜欢
            • 2023-03-13
            • 1970-01-01
            • 1970-01-01
            • 2020-02-01
            • 2020-02-27
            • 1970-01-01
            • 1970-01-01
            • 2018-06-10
            • 1970-01-01
            相关资源
            最近更新 更多