mysql - MYSQL - 在选择查询中使用带有正则表达式的变量来获取记录
问题描述
表中有字符串
+1-123-456-7890
11234567890
+1 1234567890
1777555999
我有变量$phoneNumber
。我想在 sql 查询中传递变量以获取匹配的记录。示例:
$phoneNumber
保存值1234567890
并使用相同的变量我想在一个查询中获取以下记录
+1-123-456-7890
11234567890
+1 1234567890
我想在一个查询中选择两条记录。如何将数据(11234567890)与上述保存的数字匹配?
解决方案
我们可以按照这里已经建议的替换逻辑结合正则表达式来执行此操作,以仅将电话号码与您要定位的格式匹配:
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}';
演示
推荐阅读
- dart - 禁用向下拖动以关闭 showModalBottomSheet
- sql-server - 如何在新的临时表(系统版本)上使用 SSDT 防止 SQL71609
- apache-spark - 如何将 sql 转换为 spark 数据集?
- python - 从单个数据帧创建多个 pyspark 数据帧
- ag-grid - 不保留 ag-grid v19 过滤器
- android - Spinner onItemSelected 仅返回数组的最后一项
- javascript - Angular ul、cdk-virtual-scroll-viewport 列表、键盘选择
- google-cloud-platform - 获取谷歌云cdn的域名和边缘位置的好处
- jenkins - 用于 Jenkins Junit 测试结果集描述的 Groovy 脚本
- java - Java中逆变的误解与代码示例