我如何在查询中使用replace语句

时间:2015-04-17 20:54:42

标签: sql-server-2012

我正在尝试查询具有以逗号分隔的值的表,如下所示:

SELECT ID, NAME,FULLNAME,STATUS,STORE 
FROM EMPLOYEE 
WHERE STORE IN (SELECT '''' + REPLACE('001,002',',',''',''') +'''')
ORDER BY STORE

当我运行上面的查询时,它不会产生任何结果, 但是当我像这样运行时:

SELECT ID, NAME,FULLNAME,STATUS,STORE 
FROM EMPLOYEE 
WHERE STORE IN ('001','002')
ORDER BY STORE

我得到500条记录。

当我尝试这个时:

SELECT ('''' + REPLACE('001,002',',',''',''') +'''') 

我得到了结果' 001',' 002'

所以我的问题是,为什么第一个脚本不起作用,并且没有产生结果?

我必须在脚本中添加一些内容才能使其正常工作吗?

请告知。

1 个答案:

答案 0 :(得分:0)

如果我有这个场景怎么办

SELECT ID, NAME,FULLNAME,STATUS,STORE 
FROM dbo.EMPLOYEE 
WHERE STORE IN (
    SELECT t2.ID
    FROM (
        SELECT Value = REPLACE('001,002', ',', '.')
    ) t
    CROSS APPLY (
        VALUES 
            (PARSENAME(t.Value, 1)),
            (PARSENAME(t.Value, 2))
    ) t2 (ID)
)
AND STATUS IN (
    SELECT t2.ID1
    FROM (
        SELECT Value1 = REPLACE('A,T,L', ',', '.')
    ) t1
    CROSS APPLY (
        VALUES 
            (PARSENAME(t1.Value1, 1)),
            (PARSENAME(t1.Value1, 2))
    ) t2 (ID1)
)

ORDER BY STORE

我试过了,它没有用,所以我只是想知道它是否适用于超过1个条件。