国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

t-sql建臨時表,處理字符串

2024-07-21 02:11:51
字體:
來源:轉載
供稿:網友

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)[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建成固定表,更快。
 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定兴县| 贵溪市| 赤水市| 新乡县| 札达县| 叙永县| 郎溪县| 东丰县| 左贡县| 铜山县| 青铜峡市| 徐州市| 胶南市| 泰安市| 林芝县| 宿州市| 自贡市| 休宁县| 天津市| 永和县| 华亭县| 盐亭县| 柞水县| 丰城市| 中宁县| 宁陵县| 东城区| 柳林县| 花莲市| 广西| 大厂| 衡南县| 南皮县| 固原市| 九龙县| 忻州市| 淮南市| 英山县| 兴宁市| 轮台县| 珲春市|