我试图根据最后6位数匹配电话号码。问题是数据库中的数字是各种格式的,有些在数字内有空格。
SELECT * FROM users WHERE trim(phone) LIKE '%123456'
修剪只删除前导空格和尾随空格,并且找不到客户输入数字的条目,数字之间有空格: 123 456,12 34 56等
那么如何删除搜索中的空白?没有空格的结果是不够的。使用replace更新数据库也不是一种选择。
答案 0 :(得分:1)
使用replace()
替换所有出现的' '到''在一个字符串中。
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'