gpt4 book ai didi

tsql - T-SQL : Find column match within a string (LIKE but different)

转载 作者:行者123 更新时间:2023-12-02 01:42:44 24 4
gpt4 key购买 nike

服务器:SQL Server 2008 R2

我提前道歉,因为我不确定表达问题的最佳方式。我收到了一串电子邮件地址,我需要查看在该字符串中是否有任何地址已经作为用户存在。显然不起作用的查询如下所示,但希望它有助于阐明我在寻找什么:

SELECT f_emailaddress
FROM tb_users
WHERE f_emailaddress LIKE '%user1@domain.com,user2@domain.com%'

我希望 SQL 有一个“InString”运算符,它会检查“字符串内”的匹配项,但我今天的 Google 能力一定很弱。

非常感谢任何帮助。如果根本没有办法,我将不得不深入研究并在代码隐藏中做一些工作以拆分字符串中的每个项目并搜索每个项目。

提前致谢,蜜蜂

最佳答案

拆分输入字符串并使用IN子句

要将 CSV 拆分为行,请使用它。

SELECT Ltrim(Rtrim(( Split.a.value('.', 'VARCHAR(100)') )))
FROM (SELECT Cast ('<M>'
+ Replace('user1@domain.com,user2@domain.com', ',', '</M><M>')
+ '</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)

现在在 where 子句中使用上面的查询。

SELECT f_emailaddress
FROM tb_users
WHERE f_emailaddress IN(SELECT Ltrim(Rtrim(( Split.a.value('.', 'VARCHAR(100)') )))
FROM (SELECT Cast ('<M>'
+ Replace('user1@domain.com,user2@domain.com', ',', '</M><M>')
+ '</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a))

或者使用可以使用Inner Join

SELECT f_emailaddress
FROM tb_users A
JOIN (SELECT Ltrim(Rtrim(( Split.a.value('.', 'VARCHAR(100)') )))
FROM (SELECT Cast ('<M>'
+ Replace('user1@domain.com,user2@domain.com', ',', '</M><M>')
+ '</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)) B
ON a.f_emailaddress = b.f_emailaddress

关于tsql - T-SQL : Find column match within a string (LIKE but different),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com