Php 如果字符匹配,Mysql将从字符串中删除最后2个字符

Php 如果字符匹配,Mysql将从字符串中删除最后2个字符,php,mysql,sql,select,Php,Mysql,Sql,Select,我的某些行中有一些不正确的数据,因此无法准确搜索 我的“类别名称”列下有如下值: category_name interior-- exterior interior SELECT count(id) FROM designs WHERE TRIM(TRAILING '--' FROM category_name)='interior' 由于在某些类别名称的末尾有--,我无法获得特定类别的准确计数 我正在使用下面的查询 select count(id) from designs where

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

我的“类别名称”列下有如下值:

category_name

interior--
exterior
interior
SELECT count(id) FROM designs WHERE TRIM(TRAILING '--' FROM category_name)='interior'
由于在某些类别名称的末尾有
--
,我无法获得特定类别的准确计数

我正在使用下面的查询

select count(id) from designs where category_name='interior'
如何使用TRIM()函数在where子句中匹配值的尾部时忽略
-->
,如下所示:

category_name

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

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

select count(id) from designs where category_name LIKE 'interior'
希望这能解决您的问题

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

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

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

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

不能使用like,因为我还有其他类似的类别,比如“interior decorator”,所以计数不会被更正。它会在末尾只修剪两个
-
s,还是修剪任意偶数个尾随
-
s?