用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在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子句中可搜索的主要内容,如果未能解决你的问题,请参考以下文章

替换花括号中的逗号

将逗号替换为分号更漂亮

Excel 怎样批量添加逗号 急 在线等

js中数组中元素之间的逗号如何去掉

将分隔字符串拆分为存储过程中的变量[重复]

用括号和逗号替换字符串中的逗号(如果它们不存在)