我正在尝试查询具有以逗号分隔的值的表,如下所示:
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'
所以我的问题是,为什么第一个脚本不起作用,并且没有产生结果?
我必须在脚本中添加一些内容才能使其正常工作吗?
请告知。
答案 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个条件。