【问题标题】:Mysql Removing last 2 char from string if char matches如果char匹配,Mysql从字符串中删除最后2个字符
【发布时间】:2012-04-26 09:27:12
【问题描述】:

我的某些行中有一些不正确的数据,因此我无法准确搜索。

我的 category_name 列下有如下值:

category_name

interior--
exterior
interior

由于 -- 在某些类别名称的末尾,我无法获得特定类别的确切计数

我正在使用以下查询

select count(id) from designs where category_name='interior'

在where子句中匹配时如何忽略--

【问题讨论】:

    标签: php mysql sql select


    【解决方案1】:

    Trim 来自使用 TRIM() 函数的值的尾随 --,如下所示:

    SELECT count(id) FROM designs WHERE TRIM(TRAILING '--' FROM category_name)='interior'
    

    【讨论】:

    • 它会在末尾只修剪两个-s 还是任何偶数个尾随-s?
    【解决方案2】:

    或者您可以使用 LIKE 仅搜索内部。我想你需要这样做。

    select count(id) from designs where category_name LIKE 'interior'
    

    希望这能解决您的问题

    【讨论】:

    • 不能使用like,因为我还有其他类似的类别,比如“室内装饰师”,所以计数不正确
    【解决方案3】:

    要在字段中的任何位置查找字符串“--”并删除前导和尾随空格,这将起作用:

    SELECT count(id) FROM designs WHERE TRIM(REPLACE(category_name, '--', ''))='interior'
    

    【讨论】:

      【解决方案4】:

      假设您在 category_name 上有一个索引,这将比对每一行应用一个函数更有效,因为它将能够利用索引:

      SELECT COUNT(id) FROM designs WHERE category_name IN ('interior', 'interior--')
      

      【讨论】:

        猜你喜欢
        • 2017-07-06
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-19
        相关资源
        最近更新 更多