是否可以搜索一个表但预先格式化查询中的字段以仅匹配数字...例如,我将电话号码存储为 (123) 555-1234
当有人搜索 LIKE '%123555%'
时,如您所见,它不会返回。
如何编写一个 sql 查询来在搜索之前预先格式化字段值...
SELECT * FROM Contacts WHERE FormatFieldHere(phoneNumber) LIKE '%123555%'
最佳答案
在MySQL 8.0中,可以使用function REGEXP_REPLACE()
在进行比较之前去掉所有非数字字符,例如:
SELECT *
FROM Contacts
WHERE REGEXP_REPLACE(phoneNumber, '[^0-9]', '') LIKE '%123555%'
Regexp '[^0-9]'
表示:除了数字以外的所有内容。使用这种技术,您无需明确列出要忽略的每个字符。
关于MySQL 搜索一个字段但删除所有非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55582199/