首页 > 解决方案 > MYSQL - 在选择查询中使用带有正则表达式的变量来获取记录

问题描述

表中有字符串

+1-123-456-7890 
11234567890
+1 1234567890
1777555999

我有变量$phoneNumber。我想在 sql 查询中传递变量以获取匹配的记录。示例: $phoneNumber保存值1234567890 并使用相同的变量我想在一个查询中获取以下记录

+1-123-456-7890 
11234567890
+1 1234567890

我想在一个查询中选择两条记录。如何将数据(11234567890)与上述保存的数字匹配?

标签: mysqlsqlregex

解决方案


我们可以按照这里已经建议的替换逻辑结合正则表达式来执行此操作,以仅将电话号码与您要定位的格式匹配:

WITH yourTable AS (
    SELECT '+1-123-456-7890' AS phone UNION ALL
    SELECT '+1 1234567890' UNION ALL
    SELECT '+6512345678'
)

SELECT
    phone,
    REPLACE(REPLACE(REPLACE(phone, ' ', ''), '+', ''), '-', '') AS common_phone
FROM yourTable
WHERE phone REGEXP '\\+[0-9][[:space:]-][0-9]{3}-?[0-9]{3}-?[0-9]{4}';

在此处输入图像描述

演示


推荐阅读