MySQL select语句删除WHERE子句中的空格

时间:2017-04-14 17:58:13

标签: mysql select

我试图根据最后6位数匹配电话号码。问题是数据库中的数字是各种格式的,有些在数字内有空格。

SELECT * FROM users WHERE trim(phone) LIKE '%123456' 

修剪只删除前导空格和尾随空格,并且找不到客户输入数字的条目,数字之间有空格: 123 456,12 34 56等

那么如何删除搜索中的空白?没有空格的结果是不够的。使用replace更新数据库也不是一种选择。

1 个答案:

答案 0 :(得分:1)

使用replace()替换所有出现的' '到''在一个字符串中。

mySQL documentation

REPLACE(str,from_str,to_str)

返回字符串str,其中所有出现的字符串from_str都替换为字符串to_str。搜索from_str时,REPLACE()执行区分大小写的匹配。

SELECT * FROM users WHERE Replace(coalesce(Phone,''), ' ','') LIKE '%123456'

如果你不能在where子句中这样做,这对我来说似乎很奇怪;只需将其嵌套在选择中。

Select sub.* 
from (Select u.*, Replace(coalesce(Phone,''), ' ','') as ph
               from users u) sub
where sub.ph LIKE '%123456'