临时表|字符串declare str1 varchar(100), str2 varchar(100), str3 varchar(100),str varchar(500)
set str1=''aada,bbbf,ccc,''
set str2=''ddd,aaaaaa,fdsa''
set str3=''vvvvvv,aaabbbb''
set str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''
现在:
把str1拆分成aada,bbbf,ccc三个元素,其中bbbf在str里出现过
把str2拆分成ddd,aaaaaa,fdsa三个元素,其中ddd在str里也出现过
把str3拆分成vvvvvv,aaabbbb两个元素,但是没有任何元素在str里出现过
请问我怎么用程序实现这样一个结果
其实实际问题是这样的
我有一个数据表,里有个字段classid
其中一条纪录的数据,比如是:aada,bbbf,ccc
现在要得到这样一个结果集,将classid按照上面的拆分方式拆分,得到的数据,在str里出现过(str是外界传过来的一个参数)的记录找出来,请问我该怎么做?
---------------------------------------------------------------
declare str varchar(500)
set str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''
create table 你的表 (classid varchar(100))
insert 你的表 values(''aada,bbbf,ccc'')
insert 你的表 values(''ddd,aaaaaa,fdsa'')
insert 你的表 values(''vvvvvv,aaabbbb'')
create table #临时表(a varchar(100))
declare aaa varchar(8000)
set aaa=''insert #临时表 select * from (select ''''''+replace(str,'','',''''''as str union all select '''''')+'''''') a''
exec(aaa)
select * from 你的表 where exists (select 1 from #临时表 where '',''+你的表.classid+'','' like ''%,''+a+'',%'')
go
drop table 你的表,#临时表
---------------------------------------------------------------
create table #t(
id varchar(10))
declare str varchar(300)
set str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''
declare i int
declare len int
set i = 1
set str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''+'',''
while i < len(str)
begin
insert #t select substring(str,i,charindex('','',str,i)-i)
set i = charindex('','',str,i)+1
end
select * from 数据表 A,#t B where charindex(B.id, A.classid) > 0
---------------------------------------------------------------
create table t (classid varchar(100))
insert t values(''aada,bbbf,ccc'')
insert t values(''ddd,aaaaaa,fdsa'')
insert t values(''vvvvvv,aaabbbb'')
declare str varchar(500)
set str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''
select top 500 identity(int,1,1) as id into #t from sysobjects
select distinct A.* from t A,
( select substring('',''+string+'','',id+1,charindex('','','',''+string+'','',id+1)-id-1) as string
from (select str as string) B,#t c
where substring('',''+string+'','',id,8000) like '',_%'') D
where charindex('',''+string+'','','',''+classid+'','')>0
drop table #t
把#t建成固定表,更快。
t-sql建临时表,处理字符串
80酷酷网 80kuku.com