【问题标题】:SQL SELECT whitespace insensitiveSQL SELECT 空格不敏感
【发布时间】:2014-08-05 08:17:15
【问题描述】:

无论用户是否输入带空格的字符串,获得 MySQL SELECT 结果的最佳方法是什么?例如,在数据库中,我有列值“B 009”,我想为参数“b 009”和“b009”选择它。 我正在使用 PHP。

【问题讨论】:

    标签: php sql select syntax


    【解决方案1】:

    既然要不区分大小写,请使用大写

    SELECT * FROM table_name  
    WHERE upper(REPLACE(column_name, ' ', '')) 
    LIKE upper(REPLACE(value_to_be_matched, ' ', ''));
    

    对于MYSQL Fiddle,

    SELECT * FROM test WHERE 
    REPLACE(column1, ' ' , '') = REPLACE('b 009', ' ', '');
    

    【讨论】:

      【解决方案2】:

      您可以通过REPLACE 和LIKE 使用以下解决方案:

      SELECT * FROM table_name 
      WHERE REPLACE(column_name, ' ', '') LIKE REPLACE('b 009', ' ', '');
      

      演示: http://sqlfiddle.com/#!9/17e2d9/1/0

      值b 009 是您的输入值。使用LIKE 进行的字符串比较不区分大小写,除非其中一个操作数区分大小写(使用区分大小写的排序规则或者是二进制字符串)。

      【讨论】:

        【解决方案3】:

        SELECT 不区分大小写。对于空格,假设您的列是“用户”表中的“名称”,您可以使用正则表达式:

        SELECT * FROM user WHERE name REGEXP 'B *009'
        

        【讨论】:

        • 这只是特定值的特定解决方案,但如何推广
        • 是的,但是如果“B0 09”不应该匹配怎么办?我想我们会留给提出问题的人使用适合他/她要求的东西。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        • 2016-01-30
        • 2023-03-30
        • 2019-01-12
        • 2013-01-21
        • 1970-01-01
        相关资源
        最近更新 更多