替换SQL Server中的字符串

时间:2012-08-03 05:20:31

标签: sql sql-server string function

我有一个下面的函数和输出,它基本上是在字符串中查找特定字母并用其他字母替换它们,例如在此字符串中abcde我要替换de使用xy,因此我提供了@input = abcde@find = de@replace = xy,因此我将输出设为abcxy,但假设我有一个字符串{{1我希望用hath替换tm,我该如何实现?

我必须在我的函数中使用while循环找到解决方案

c

3 个答案:

答案 0 :(得分:3)

最简单的方法是,第二次运行该功能: - )

select dbo.replace_letters(dbo.replace_letters('hat', 'h', 'm'), 't', 'c')

答案 1 :(得分:1)

简单地运行

选择REPLACE(REPLACE('HAT','H','M'),'T','C')。

SQL Server提供了替换函数,那么为什么要编写自己的函数来执行相同的任务呢?

答案 2 :(得分:0)

试试这个: 它将替换@Find中的第一个字符,并将其替换为@Replace的第一个字符和@Find中的第二个字符,并将其替换为@Replace的第二个字符。

CREATE  FUNCTION dbo.replace_letters
(
  @Input AS VARCHAR(1000),
  @Find AS VARCHAR(100),
  @Replace AS VARCHAR(100)
)
RETURNS VARCHAR(1000)
AS
BEGIN
   SELECT @Input = REPLACE(REPLACE(@Input, SUBSTRING(@Find,1,1),SUBSTRING(@Replace,1,1)),SUBSTRING(@Find,2,1),SUBSTRING(@Replace,2,1))
   RETURN @input
END

 SELECT dbo.replace_letters('hat','ht','mc')
 SELECT dbo.replace_letters('hahtaahtat','ht','xy')

答案是:

MAC

xaxyaaxyay