用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在IN子句中可搜索

问题描述 投票:-1回答:1

我是SQL查询的新手所以,对不起如果我错过了基本的细节。这是场景:

我必须在列中搜索用户电子邮件ID。

该列包含值

[email protected];[email protected];[email protected];

现在我从查询中获得了用户电子邮件ID:

DECLARE @emailid AS VARCHAR(50)
SELECT @emailid = emailId FROM dbo.tblUser WHERE userName  = 'abc' AND projectId ='P1456'

我还用逗号代替分号:

COLUMNNAME IN (REPLACE(@emailid,';' ,','))

现在我得到了像[email protected],[email protected],[email protected],这样的字符串

但是IN子句将它视为单个字符串,那么如何在每个电子邮件ID中附加引号如下,以帮助IN子句进行搜索?

'[email protected]','[email protected]','[email protected]',
sql asp.net tsql stored-procedures
1个回答
0
投票

试试这个:

DECLARE @emailid AS VARCHAR(50)
SELECT @emailid = '[email protected];[email protected];[email protected];'

SELECT   @emailid AS emailid
        ,REPLACE(SUBSTRING( ''''+@emailid+'''', 
        PATINDEX(';',@emailid), 51),';',''+ ''''+','+''''+'') AS [replaced]

我希望你使用的是MSSQL

© www.soinside.com 2019 - 2024. All rights reserved.