在SQL Server中替换字符串

在SQL Server中替换字符串,sql,sql-server,string,function,Sql,Sql Server,String,Function,我在下面有一个函数,还有输出,它基本上是在一个字符串中找到特定的字母,并用其他字母替换它们,例如在这个字符串abcde中,我想用xy替换de,所以我给出@input=abcde、@find=de和@replace=xy,所以我得到的输出是abcxy,但如果假设我有一顶弦帽,我想用m和c替换h和t,我该如何实现呢 我必须在函数中不使用while循环的情况下找到解决方案 create FUNCTION dbo.replace_letters ( @Input AS VarChar(1000),

我在下面有一个函数,还有输出,它基本上是在一个字符串中找到特定的字母,并用其他字母替换它们,例如在这个字符串abcde中,我想用xy替换de,所以我给出@input=abcde、@find=de和@replace=xy,所以我得到的输出是abcxy,但如果假设我有一顶弦帽,我想用m和c替换h和t,我该如何实现呢

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

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(@Input, @Find,@Replace)

   return @input
end

--run
select dbo.replace_letters ('abcde', 'ed', 'dc')

最简单的方法是再次运行该函数:-

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

最简单的方法是再次运行该函数:-

select dbo.replace_letters(dbo.replace_letters('hat', 'h', 'm'), 't', 'c')
试试这个: 它将替换@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')
答案是:

苹果

xaxyaaxyay

试试这个: 它将替换@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')
答案是:

苹果

xaxyaaxyay

只需运行

选择替换“帽子”、“H”、“M”、“T”、“C”

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

只需运行

选择替换“帽子”、“H”、“M”、“T”、“C”


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

为什么需要函数?为什么不直接使用替换功能?你不能解决的问题是什么?听起来不错,看起来不错?为什么不为所有需要执行的替换调用replace函数?为什么需要函数?为什么不直接使用替换功能?你不能解决的问题是什么?听起来不错,看起来不错?为什么不为所有需要执行的替换调用replace函数呢?