首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

如何把SQL中一个分割函数的查询,改成存储过程呢? ~ 有完整代码,改成存储过程就好了~ 求

2012-05-04 
怎么把SQL中一个分割函数的查询,改成存储过程呢??? ~~有完整代码,改成存储过程就好了~ 求助求助求助求助求

怎么把SQL中一个分割函数的查询,改成存储过程呢??? ~~ 有完整代码,改成存储过程就好了~ 求助求助求助求助求助求助求助求助求助求
第一张表Tra_illegal 第二张表Tra_law
字段1 字段2 字段1 字段2
illegalid thekey sysid thetext
1011 1097|10151 1097 非法安装报警器 (下面是值哈)
1012 1090|10951 10151 酒后驾驶 
  1090 《道法》  
  10951 超载



 要实现的功能:通过输入第一张表的illegalid,查询到第二张表的字段内容,分割thekey,(如分割1097|10151成1097和10151去查,查出2表中的两条记录) 
 下面上我的代码,帮忙给改成存储过程。。。 能改吗??
create function [f_split](@c varchar(2000),@split varchar(2)) (先是一个分割函数)
returns @t table(col varchar(20))  
as  
  begin  
   
  while(charindex(@split,@c)<>0)  
  begin  
  insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))  
  set @c = stuff(@c,1,charindex(@split,@c),'')  
  end  
  insert @t(col) values (@c)  
  return  
  end  

go
declare @r varchar(200) ;

select @r = thekey from dbo.Tra_illegal ;
select * from dbo.Tra_law where sysid in (select col from [f_split](@r,'|')) ;


  有耐心的朋友帮忙看下能改下不, 因为我要在VS里面做这个查询 急急急啊~ 先谢谢了




[解决办法]

SQL code
create table Tra_illegal (illegalid int, thekey varchar(15))create table Tra_law(sysid int, thetext varchar(20))insert into Tra_illegalselect 1011, '1097|10151' union all select 1012, '1090|10951'insert into Tra_lawselect 1097, '非法安装报警器' union allselect 10151, '酒后驾驶' union all  select 1090, '《道法》' union all   select 10951, '超载'-- 楼主的函数create function [f_split](@c varchar(2000),@split varchar(2))returns @t table(col varchar(20))   as     begin         while(charindex(@split,@c)<>0)     begin     insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))     set @c = stuff(@c,1,charindex(@split,@c),'')     end     insert @t(col) values (@c)     return     end   -- 用cross applyselect a.*,b.*,c.*from Tra_illegal across apply [f_split](a.thekey,'|') binner join Tra_law con b.col=c.sysid-- 结果/*illegalid   thekey          col                  sysid       thetext----------- --------------- -------------------- ----------- --------------------1011        1097|10151      1097                 1097        非法安装报警器1011        1097|10151      10151                10151       酒后驾驶1012        1090|10951      1090                 1090        《道法》1012        1090|10951      10951                10951       超载(4 row(s) affected)*/ 

热点排行
Bad Request.