用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在IN子句中可搜索
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在IN子句中可搜索相关的知识,希望对你有一定的参考价值。
我是SQL查询的新手所以,对不起如果我错过了基本的细节。这是场景:
我必须在列中搜索用户电子邮件ID。
该列包含值
abc@company.com;xyz@company.com;test@company.com;
现在我从查询中获得了用户电子邮件ID:
DECLARE @emailid AS VARCHAR(50)
SELECT @emailid = emailId FROM dbo.tblUser WHERE userName = 'abc' AND projectId ='P1456'
我还用逗号代替分号:
COLUMNNAME IN (REPLACE(@emailid,';' ,','))
现在我得到了像abc@company.com,xyz@company.com,test@company.com,
这样的字符串
但是IN子句将它视为单个字符串,那么如何在每个电子邮件ID中附加引号如下,以帮助IN子句进行搜索?
'abc@company.com','xyz@company.com','test@company.com',
答案
试试这个:
DECLARE @emailid AS VARCHAR(50)
SELECT @emailid = 'abc@company.com;xyz@company.com;test@company.com;'
SELECT @emailid AS emailid
,REPLACE(SUBSTRING( ''''+@emailid+'''',
PATINDEX(';',@emailid), 51),';',''+ ''''+','+''''+'') AS [replaced]
我希望你使用的是MSSQL
以上是关于用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在IN子句中可搜索的主要内容,如果未能解决你的问题,请参考以下文章