关于字符串和数据表的混合查询的一个难题,请大师们帮个忙。
关于字符串和数据表的混合查询的一个难题,请大师们帮个忙。
问题是这样的:
有一串字符串比如'a','b','c','d','e','f'
另有一个数据表暂时命名为Tb,假设表上有个字段col1
然后想查询出一个结果是字符串中有,但是Tb.col1中没有的。这是不是好难?
本人分不多,50分请别介意。
[解决办法]
declare @s varchar(100)
set @s='''a'',''b'',''c'',''d'',''e'',''f'''
select *
from tb
where CHARINDEX(@s,col1)>0
USE CSDN
GO
CREATE TABLE #temp(col1 VARCHAR(10))
INSERT #temp
SELECT 'b' UNION ALL
SELECT 'c' UNION ALL
SELECT 'd'
--楼主没说你TB表中col1的数据的结构,参考如下:
DECLARE @string VARCHAR(100)
SET @string = 'a,b,c,d,e,f'
SELECT b.string FROM
(SELECT string=CONVERT(XML, '<root><v>'+replace(@string,',','</v><v>')+'</v></root>')) a
OUTER APPLY
(SELECT string = C.v.value('.','NVARCHAR(MAX)') FROM a.string.nodes('/root/v') C(v)) b
WHERE NOT EXISTS
(
SELECT 1 FROM #temp m
WHERE m.col1 = b.string
)
/*
string
a
e
f
*/