Sql server 2012 如何在查询中使用replace语句
我试图查询一个表,该表的值用逗号分隔,如下所示:Sql server 2012 如何在查询中使用replace语句,sql-server-2012,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
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”
所以我的问题是,为什么第一个脚本不起作用,并且不产生任何结果
有什么我必须添加到脚本中才能工作的吗
请告知。如果我遇到这种情况会怎样
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
我试过了,但没有成功,所以我只是想知道它是否适用于超过一种情况。让我们后退一步。为什么要尝试构建这样的存储值字符串?可能还有更好的方法。你的设计有问题,并且会继续给你带来问题。请停止将SQL Server视为JSON实用程序。如果要传递一组要检查的值,请使用表值参数。这个字符串解析毫无意义,嗯,毫无意义。可能是