如果正在表中找到电话号码,我正在使用SQL脚本来添加客户的ID。
下面是我的代码段:
CREATE TABLE #Customers ( AccountNumber nvarchar(20))
CREATE TABLE #Phones ( Number nvarchar(30))
INSERT INTO #Customers (AccountNumber)
SELECT AccountNumber
FROM CustomerTable
WHERE
(CustomerTable.PhoneNumber IN (SELECT DISTINCT Number FROM #Phones))
OR
(CustomerTable.PhoneNumber2 IN (SELECT DISTINCT Number FROM #Phones))
GO
但是,使用这些语句,我只能检查表中是否满足确切的记录。例如: 如果Phones.Number的记录为“ 123456”,而CustomerTables.PhoneNumber的记录为“ 123456 7”,则即使包含该号码,也不会获得该记录。
为了对LIKE运算符应用类似的逻辑,我可以对当前代码段进行任何修改吗?
答案 0 :(得分:4)
这不能直接通过in
运算符完成,但是在exists
运算符内部使用查询应该可以解决问题:
INSERT INTO #Customers (AccountNumber)
SELECT AccountNumber
FROM CustomerTable ct
WHERE EXISTS (SELECT *
FROM #Phones p
WHERE ct.PhoneNumber LIKE '%' + p.Number + '%' OR
ct.PhoneNumber2 LIKE '%' + p.Number + '%')
答案 1 :(得分:1)
var selections;
$("#test").mousedown(function(e) {
selections = $(this).val();
}).click(function() {
if (selections == null) {
var selected = -1;
selections = [];
} else
var selected = selections.indexOf($.isArray($(this).val()) ? $(this).val()[$(this).val().length - 1] : $(this).val());
if (selected >= 0)
selections.splice(selected, 1);
else
selections.push($(this).val()[0]);
$('#test option').each(function() {
$(this).prop('selected', selections.indexOf($(this).val()) >= 0);
});
});
答案 2 :(得分:0)
我认为这也可以,但是我尚未测试。
WITH Customers AS
(
SELECT AccountNumber , Len(PhoneNumber) as PhoneSize
FROM
)
INSERT INTO #Customers (AccountNumber)
SELECT AccountNumber
FROM CustomerTable a
Join Customers b on a.AccountNumber = b.AccountNumber
WHERE
(CustomerTable.PhoneNumber IN (SELECT DISTINCT LEft(Number,b.PhoneSize) FROM #Phones))
OR
(CustomerTable.PhoneNumber2 IN (SELECT DISTINCT LEft(Number,b.PhoneSize) FROM #Phones))