我想从用户表中搜索电话号码,它有百万条用户记录。 “用户”表将包含带或不带国家/地区代码的电话号码。
用户表格中的电话号码示例
+911111122222
3333344444
+15555566666
+917777788888
+19999900000
我将传递的输入电话号码,可能有也可能没有国家代码。我将输入100到1000个电话号码
1111122222
+913333344444
+15555566666
7777788888
9999900000
我想检索所有与国家/地区代码相匹配的电话号码的记录。
现在我正在使用它,
Select * from users WHERE phone_numer IN ("1111122222","+913333344444", "+15555566666", "7777788888", "9999900000");
它不会返回所有电话号码,我们该如何处理?
答案 0 :(得分:1)
您可以检查您要测试的号码是否在数据库中的号码末尾,为此,请查看this question如何使用LIKE
多个值
WHERE phone_number LIKE '%1111122222'
将同时匹配1111122222
和+91111122222
答案 1 :(得分:1)
select *
from users
where
CASE WHEN phone_number like '+%' THEN SUBSTRING(phone_number,4,len(phone_number))
ELSE phone_number IN (Pass phone numbers without code)
示例:
select *
from users
where
CASE WHEN phone_number like '+%' THEN SUBSTRING(phone_number,4,length(phone_number))
ELSE phone_number END IN
('1111122222','3333344444', '555566666', '7777788888', '9999900000')
<强> SQL FIDDLE 强>