• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

t-sql建临时表,处理字符串_sqlserver

sqlserver 搞代码 3年前 (2018-06-16) 63次浏览 已收录 0个评论

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”  
现在:  

http://www.gaodaima.com/36031.htmlt-sql建临时表,处理字符串_sqlserver

[email protected],bbbf,ccc三个元素,[email protected]  
[email protected],aaaaaa,fdsa三个元素,[email protected]  
[email protected],aaabbbb两个元素,[email protected]  
请问我怎么用程序实现这样一个结果  
其实实际问题是这样的  
我有一个数据表,里有个字段classid  
其中一条纪录的数据,比如是:aada,bbbf,ccc  
现在要得到这样一个结果集,将classid按照上面的拆分方式拆分,得到的数据,[email protected](@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)[email protected])  
   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建临时表,处理字符串_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址