mysql regex通过电话号码数组进行搜索

iovurdzv  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(321)

需要帮助在名为phone的字段上对客户数据库执行查询。

select * from customers where phone REGEXP '123456|565834'

我需要一种方法来选择regex的匹配部分matched in select子句。最终结果应该是

Name      Matched      Phone

 Naveen    123456      12345678
 Naveen2   123456     123456789
 Arun      565834       9565834
 Arun2     565834      10565834

p、 这必须是一个查询,并且没有其他唯一键可按进行分组

ryoqjall

ryoqjall1#

使用 INSTR mysql的功能。前任。 INSTR(regex, phone) ```
SELECT SUBSTRING('123456|565834',INSTR('123456|565834',phone),10)
FROM customers
WHERE phone REGEXP '123456|565834';

文件:仪器功能
3gtaxfhh

3gtaxfhh2#

你可以使用 CASE 此处的表达式:

SELECT
    Name,
    CASE WHEN Phone REGEXP '123456' THEN '123456'
         WHEN Phone REGEXP '565834' THEN '565834' END AS Matched,
    Phone
FROM customers
WHERE
    phone REGEXP '123456|565834';

请注意,您不一定需要使用 REGEXP 在这种情况下, LIKE 可能就够了。但是使用 REGEXP imo更容易阅读,而且如果将来需要,它还可以让您处理更复杂的逻辑。

4c8rllxm

4c8rllxm3#

如果您不局限于只使用mysql,那么可以尝试使用shell脚本+mysql来传递Map值和搜索-不确定是否正确理解了需求。

search="5672C";
mysql <connection details> -e "select fields, \"$search\" as matched from customers where phone like \"%$search%\";"

我们可以循环Map字符串并实现。

相关问题