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

在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

执行结果为:

      1> declare @my_var char(25)
      2> select @my_var = 'abc|ert|rfrfrf|'
      3> while charindex('|', @my_var) > 0
      4> begin
      5> select @my_var = stuff(@my_var, charindex('|', @my_var), 1, ';')
      6> end
      7> select @my_var
      8> go
       -------------------------
       abc;ert;rfrfrf;

————————————————————————————————-
—- 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
—- 转载务必注明原始出处 : http://www.dbainfo.net
—- 关键字:替换  字符串  replace str_replace stuff charindex
————————————————————————————————-

  • 本文链接地址:http://www.dbainfo.net/sybase-ase15-replace-string-funciton-str_replace.htm
  • 本文为dbainfo个人原创,请在尊重作者劳动成果的前提下进行转载;
  • 转载务必注明原始出处 : Sybase数据库技术,数据库恢复专家
  • 对《ASE12.x与15.x中的字符串替换功能的实现》有何疑问或见解,请在本文下方发表;
  • 对网站还有其他问题或建议,请提交在留言板,谢谢!
  • 目前还没有任何评论.
    :wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)