我尝试使用STUFF
在另一个字符串中插入字符串。
DECLARE @Number VARCHAR(100) = '12345'
SELECT STUFF(@Number, 3, 0, '6') -- Add value in 3rd Position, Returns '126345'
我试图将值附加到最后
SELECT STUFF(@Number, 6, 0, '6') -- Add value in 6th Position
-- Actual length is 5, So it Returns 'NULL'
预期输出:
123456
我尝试使用STUFF
进行简单陈述。但无法在最后添加字符串。任何人都可以用其他任何简单的方式帮助我吗?
答案 0 :(得分:2)
来自here:
第二个参数是一个整数值,用于指定位置 开始删除和插入。如果start或length为负数,则为null 返回字符串。 如果开始时间比第一次更长 character_expression,返回一个空字符串。 start可以是type BIGINT。
此查询:
DECLARE @Number VARCHAR(100) = '12345'
SELECT STUFF(@Number, 6, 0, '6')
返回NULL,因为只有5个字符。
如果你想在最后添加字符串,只需使用+
运算符连接该字符串。
DECLARE @Number VARCHAR(100) = '12345'
SELECT @Number + '6'
答案 1 :(得分:1)
您可以使用CONCAT
依次追加字符串。它们将按照传递给函数的顺序附加:
DECLARE @Number VARCHAR(100) = '12345'
select concat(@Number,'6')
您也可以使用'+'运算符来实现此目的。但是,如果附加的字符串为NULL,则使用“+”结果也为NULL,而CONCAT
将空字符串视为空字符串。
select concat(@Number,null,6) -- = '123456'
select @Number + null + 6 -- == null
如果要修复的位置未修复,您可以使用CASE
语句以及STUFF
和CONCAT
插入或附加到单个语句中,如下所示:< / p>
declare @number varchar(100) = '12345'
declare @pos int = 6
declare @append varchar(100) = '6'
select
case
when @pos < len(@number) then stuff(@number,@pos,0,@append)
else concat(@number,@append)
end result
答案 2 :(得分:1)
作为一个黑客你可以做到这一点,
SELECT STUFF(@Number, 5, 1, '56')