我有一个下面的函数和输出,它基本上是在字符串中查找特定字母并用其他字母替换它们,例如在此字符串中abcde
我要替换de
使用xy
,因此我提供了@input = abcde
,@find = de
和@replace = xy
,因此我将输出设为abcxy
,但假设我有一个字符串{{1我希望用hat
和h
替换t
和m
,我该如何实现?
我必须在我的函数中使用while循环找到解决方案
c
答案 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