我有一个SqlServer客户表
customer (first_name, last_name, home_phone, cell_phone)
和
等电话号码的文本文件列表9876543210,
4564561234,
1231231234,
1234567890,
客户表中的电话号码以+ 1ddddddddddd格式存储:其中ddddddddddd是电话号码。
如何找到家庭或手机号码出现在文本列表中的所有客户记录?
文本列表大约有1000个数字,所以理想情况下我只想粘贴一次。我怎样才能创建一个临时的数字表来进行查询?
SELECT first_name, last_name
FROM customer
WHERE home_phone IN (
SELECT * FROM temporary_table
)
但这与客户电话号码格式不符,只检查家庭电话号码,而不是手机号码。
答案 0 :(得分:1)
要将值加载到表中,请使用:
CREATE TABLE numbers (number VARCHAR(20))
BULK INSERT numbers
FROM 'c:\path_to\numbers.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\r\n'
)
注意,服务器可以通过此路径访问'c:\path_to\numbers.csv'
,而不是客户端。
这意味着为您的服务器运行的帐户设置权限。
要查询,请使用:
SELECT *
FROM customer
WHERE home_phone IN
(
SELECT '+1' + number
FROM numbers
)
OR cell_phone IN
(
SELECT '+1' + number
FROM numbers
)
不要在SUBSTRING
和home_phone
上使用cell_phone
:这会阻止使用索引访问这些字段并降低查询效率。
答案 1 :(得分:0)
您可以use an OR
to check multiple conditions和SUBSTRING
to strip the leading +1
:
SELECT first_name, last_name
FROM customer
WHERE SUBSTRING(home_phone,3,10) IN (
'9876543210',
'4564561234',
'1231231234',
'1234567890'
)
OR SUBSTRING(cell_phone,3,10) IN (
'9876543210',
'4564561234',
'1231231234',
'1234567890'
)
SUBSTRING
函数不是标准ANSI SQL,因此数据库之间会略有不同,例如它可能被称为SUBSTR
。
答案 2 :(得分:0)
我会使用电话号码的子字符串进行比较。例如:
select first_name
, last_name
from customer
where ( substring(home_phone, 2, 10) in (
'9876543210',
'4564561234',
'1231231234',
'1234567890'
)
OR substring (cell_phone, 2, 10) in (
'9876543210',
'4564561234',
'1231231234',
'1234567890'
))
答案 3 :(得分:0)
对于云雀,您可以尝试将数字放在一个看起来像数组的xml对象中(即您可以将其作为参数传递给存储过程)然后将其拖放到关系中并将其与您的customer表连接:
declare @numbers xml
set @numbers = '<numbers>
<number value="9876543210"/>
<number value="4564561234"/>
<number value="1231231234"/>
<number value="1234567890"/>
</numbers>'
SELECT first_name, last_name
FROM customers
join @number.nodes('//number') as t(c)
on c.value('@value','varchar(10)') = '+1'+customers.homephone
答案 4 :(得分:0)
SELECT * FROM customer WHERE home_phone = REPLACE("+1", "", "+19876543210");
在这里查看其他很酷的MySQL字符串功能: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html