首页 新闻 会员 周边

跪求 SQL server小问题

0
悬赏园豆:5 [已关闭问题]

有个表A
有BC字段 如下:
B         C
14254     adaskj
243255    jdkss
25145     dfdtv
把B列2出现的位置在C列里换成H
B         C
14254     adHskj
243255    HdkHs
25145     Hfdtv

用SQL语句实现

zhangpeng1008的主页 zhangpeng1008 | 菜鸟二级 | 园豆:283
提问于:2009-11-05 15:20
< >
分享
其他回答(3)
0

创建一个函数:

create function getnewstr(@str1 varchar(10),@str2 varchar(10))
returns varchar(10)
as
begin
declare @i int
set @i = 1
while @i <= len(@str1)
if substring(@str1, @i, 1)='2'
set @str2 = replace(@str2, substring(@str2, @i, 1), 'H')
else
set @i = @i +1
return @str2
end
go

 

执行函数:select dbo.getnewstr(B,C)

dege301 | 园豆:2825 (老鸟四级) | 2009-11-05 15:57
0

create function f(@b varchar(10),@c varchar(10)) returns varchar(10)
as
begin
  declare @i int
  set @i=1
  while charindex('2',@b,@i)>0
  begin
        set @i=charindex('2',@b,@i)
    set @c=substring(@c,1,@i-1)+'H'+substring(@c,@i+1,len(@c)-@i)
    set @i=@i+1
  end
return @c
end

 

declare @t table(b varchar(10),c varchar(10))
insert @t

select '14254',     'adaskj'
union all
select '243255',    'jdkss'
union all
select '25145',     'dfdtv'


select dbo.f(b,c),c from @t

清海扬波 | 园豆:825 (小虾三级) | 2009-11-05 16:06
0

善用SQL提供的字符串函数

update t_test set C = SUBSTRING(C,0,charindex('2',B))+'H'+SUBSTRING(C,(charindex('2',B)+1),9999)

黏人小豆包 | 园豆:210 (菜鸟二级) | 2009-11-05 16:18
不错不错
支持(0) 反对(0) zhangpeng1008 | 园豆:283 (菜鸟二级) | 2009-11-05 16:30
--只适用于B字段值位数<=C字段值位数且B字段值中‘2’出现在次数只能是一次 update A set C=SUBSTRING(C,0,charindex('2',B))+'H'+SUBSTRING(C,(charindex('2',B)+1),9999) --惭愧,你可以研究dege301和清海扬波方法 --希望没给你带来什么损失
支持(0) 反对(0) 黏人小豆包 | 园豆:210 (菜鸟二级) | 2009-11-05 16:38
0

学习了。

海风1998 | 园豆:20 (初学一级) | 2009-11-05 16:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册