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

关于replace替换的有关问题

2012-12-15 
关于replace替换的问题程序一declare @begin as nvarchar(1500),@end as nvarchar(1500),@a as nvarchar(1

关于replace替换的问题
程序一

declare @begin as nvarchar(1500),@end as nvarchar(1500),@a as nvarchar(150) ,@b as nvarchar(150)
declare @i as int,@count as int, @m as int,@j as int,@k as int
set @i=(select min(a.id) from ( select Begindate,Enddate,id 
from  TBL_Hk_co_perprofile 
where  len(Begindate)>10 and len(enddate)>10) a )--从查询结果中查

 select @count=(select max(a.id) from ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a )
while @i<=@count
begin
   select @begin=replace((select begindate from( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where id =@i)+',','N/A','0000-00-00')
   select @end=replace(( select Enddate from  ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where [ID]=@i )+',','N/A','9999-00-00')
   
   set @m =LEN(@begin)
  
  while  @m>0
     begin
     set @j=patindex('%,%',@begin)
     set @k=patindex('%,%',@end)
     set @a=substring(@begin,1,@j-1)--截取下一个逗号前的字符
     set @b=substring(@end,1,@k-1)
   
     if @a>@b 
     begin
    select id,begindate,Enddate   from TBL_Hk_co_perprofile where id=@i
     end
     select @begin=substring(@begin,patindex('%,%',@begin)+1,len(@begin)-patindex('%,%',@begin))
     select @end=substring(@end,patindex('%,%',@end)+1,len(@end)-patindex('%,%',@end))
     
    select @m=LEN(@begin)
     end
    
   
  select @i=(select a.id
          from ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a 
                 where a.id in (select top 1 a.id
                                  from ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a 
                                  where id>@i
                                  order by id ))--查询下一条id


end

go



程序二


declare @begin as nvarchar(1500),@end as nvarchar(1500),@a as nvarchar(150) ,@b as nvarchar(150)
declare @i as int,@count as int, @m as int,@j as int,@k as int
set @i=(select min(a.id) from ( select Begindate,Enddate,id 
from  TBL_Hk_co_perprofile 
where  len(Begindate)>10 and len(enddate)>10) a )--从查询结果中查

 select @count=(select max(a.id) from ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a )
while @i<=@count
begin
   select @begin=(select begindate from( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where id =@i)+','
   select @end=( select Enddate from  ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where [ID]=@i )+','
   
   set @m =LEN(@begin)
  
  while  @m>0
     begin
     set @j=patindex('%,%',@begin)
     set @k=patindex('%,%',@end)
     set @a=substring(@begin,1,@j-1)--截取下一个逗号前的字符
     set @b=substring(@end,1,@k-1)
   
     if @a>@b 
     begin
    select id,begindate,Enddate   from TBL_Hk_co_perprofile where id=@i
     end
     select @begin=substring(@begin,patindex('%,%',@begin)+1,len(@begin)-patindex('%,%',@begin))
     select @end=substring(@end,patindex('%,%',@end)+1,len(@end)-patindex('%,%',@end))
     
    select @m=LEN(@begin)
     end
    
   
  select @i=(select a.id
          from ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a 
                 where a.id in (select top 1 a.id
                                  from ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a 
                                  where id>@i
                                  order by id ))--查询下一条id


end

go
   红色部分,为什么程序一做替换后不出结果,程序二是正常运行的 但是有N/A,我想用相应的字符替换,求大神指导




[最优解释]

select @begin=replace('(select begindate from( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where id ='''+@i+''')'+',','N/A','0000-00-00')
    select @end=replace('( select Enddate from  ( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where [ID]='''+@i+''')'+',','N/A','9999-00-00')

[其他解释]
select replace(begindate.'N/A','....') from...
[其他解释]
引用:
SQL code12select @begin=replace('(select begindate from( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where id ='''+@i+''')'+','……





还是不行啊
[其他解释]
引用:
SQL code12select @begin=replace('(select begindate from( select Begindate,Enddate,id from  TBL_Hk_co_perprofile where  len(Begindate)>10 and len(enddate)>10) a  where id ='''+@i+''')'+','……



效果一样
[其他解释]
引用:
程序一

declare @begin as nvarchar(1500),@end as nvarchar(1500),@a as nvarchar(150) ,@b as nvarchar(150)
declare @i as int,@count as int, @m as int,@j as int,@k as int
set @i=(select min……



这样做是为了什么??? 这样还得执行???
[其他解释]
不懂楼主 想要做甚么
[其他解释]
难道是我道行太浅了:每次看到贴代码的就看不下去了!

55555

无能为力
[其他解释]
引用:
引用:程序一

declare @begin as nvarchar(1500),@end as nvarchar(1500),@a as nvarchar(150) ,@b as nvarchar(150)
declare @i as int,@count as int, @m as int,@j as int,@k as in……




只是想替换N/A, 这个N/A在原表的begin和enddate里存在,现在将begin和enddate里的值分别赋给变量@begin和@end,并且值替换变量@begin和@end里的N/A, 可是 竟然出错了
[其他解释]

原来程序是没问题的,本来就没有结果而已,,,, 对不起大家了。结贴

热点排行