ASE12.x与15.x中的字符串替换功能的实现

----------------------------------------------------------------------------

---- 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;

---- 转载务必注明原始出 : http://blog.youkuaiyun.com/andkylee

--- 2010-04-27 19:08:43

---- 关键字: 替换  字符串  replace str_replace stuff charindex

----------------------------------------------------------------------------


在ASE12.x版本中Sybase没有提供类似replace的函数。在ASE15.x版本中添加了替换某个字符串中指定的字符为另一个字符的函数:str_replace。
使用方法为:
1> select str_replace('aaaa|bbb|ccc|','|',';')
2> go

 -------------
 aaaa;bbb;ccc;
上面的例子为将字符串aaaa|bbb|ccc|中的|替换为;


但是,在ASE12.x中需要上面上面的功能,就稍微一点麻烦了。需要结合两个函数:charindex,stuff来循环替换。
两个函数的用法分别为:


 charindex - Returns an integer representing the starting position of an expression.
    charindex(expression1, expression2)
  
 stuff - Returns the string formed by deleting a specified number of characters from one string and replacing them with another string.
    stuff(char_expr1|uchar_expr1, start, length,char_expr2|uchar_expr2)

实现的算法为:

declare @my_var char(25)
select @my_var = 'abc|ert|rfrfrf|'
while charindex('|', @my_var) > 0
begin
select @my_var = stuff(@my_var, charindex('|', @my_var), 1, ';')
end
select @my_var



执行结果为:

 


可以考虑将上面的sql语句编写成一个函数来实现从字符串中替换字符的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值