MySQL 搜索一个字段但删除所有非数字字符

标签 mysql sql database string where-clause

是否可以搜索一个表但预先格式化查询中的字段以仅匹配数字...例如,我将电话号码存储为 (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/

相关文章:

mysql - 从公司包含 1 到 5 名员工的数据库中选择员工

mysql - 所有在 2 个月前而非之后有订单的客户

mysql - 如何从 meteor 访问 mysql 数据库

sql - 使用 bash 命令在 postgresql 中创建数据库

database - 表上的派生状态字段?

sql - 检查角色是否由数据库中的特定用户组成?

php - MySQL 选择连接表作为结果数组

SQL 限制数据库中的最小值和最大值

php - KOHANA:ORM + MySQL 找不到表

python - 通过添加某些列的值从 Excel 行中删除重复项