繁体   English   中英

使用SQL Select查询作为通配符

[英]Use SQL Select query as wildcard

当前,我有以下查询:

UPDATE table1 SET P='1'
WHERE Recipient IN
(SELECT phone FROM phones WHERE number IN
(SELECT Number FROM users WHERE Username='test'))

因此,我用一个值更新了一个表列,其中在具有其他条件的列表中找到了收件人列。 现在,收件人是一个电话号码,如果前面有国家/地区代码,则从输入的数据中可以是10位或更大。 我如何更改上面的查询,以便可以查看收件人是否在结果列表中,但喜欢这些结果,以便使用通配符?

先感谢您

使用LIKE子句,您可以尝试在%运算符的帮助下匹配电话号码。 因此+1 (813) 890-4530应该与%(813) 890-4530匹配。 由于您尚未在recipientphone表中都发布数据示例,因此我假设可能存在的唯一区别是国家/地区代码。 IN子句相反,我还建议在可能的情况下使用INNER JOIN

UPDATE table1 SET P='1'
FROM phones as p inner join users as u on p.number = u.Number
cross join table1 WHERE  Username='test' and (Recipient LIKE '%' + phone OR phone LIKE '%' + Recipient)  

有很多选择:

1)应用功能来清理电话号码,使它们看起来都一样。 例如:

UPDATE table1 SET P ='1'WHERE dbo.CleanPhone(Recipient)IN(从电话中选择电话,在IN中输入电话(从用户中选择SELECT,用户名=“ test”))

2)使用INNER JOIN代替IN进行更新,并在JOIN条件下使用LIKE。 像这样:

UPDATE t
FROM Table1 t
INNER JOIN Phones p ON Recipient LIKE ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM