Sql server SQL:在替换字符串时添加数字

Sql server SQL:在替换字符串时添加数字,sql-server,Sql Server,晚上好, 我需要替换SQL列(Column3)中的“字符串的一部分”),我正在使用替换内置函数来完成此操作,但我需要在原始字符串(Column2)中添加一个前导号(1),并不断得到“字符串或二进制数据将被截断” 一个例子: 第二栏:“0200” 下面是COLUMN3字符串的示例: 第3栏:“测试数据0200” 然后在它被替换之后,我们需要这样显示它:“测试数据10200” 请注意,该数字现在包含一个前导“1” 请帮忙 您收到的错误消息表明生成的字符串太大,无法放入“数据”列。您需要增加“数据”的

晚上好,

我需要替换SQL列(Column3)中的“字符串的一部分”),我正在使用替换内置函数来完成此操作,但我需要在原始字符串(Column2)中添加一个前导号(1),并不断得到“字符串或二进制数据将被截断”

一个例子:

第二栏:“0200”

下面是COLUMN3字符串的示例:

第3栏:“测试数据0200”

然后在它被替换之后,我们需要这样显示它:“测试数据10200” 请注意,该数字现在包含一个前导“1”


请帮忙

您收到的错误消息表明生成的字符串太大,无法放入“数据”列。您需要增加“数据”的大小,以确保结果符合要求

尝试运行此选择(而不是更新)以查看发生了什么

SELECT
  REPLACE(Column3, Column2, ('1' + Column2)) AS Result,
  DATALENGTH(REPLACE(Column3, Column2, ('1' + Column2))) AS ResultSize
FROM
  [database].[dbo].[Table1]

也许这个REPLACE函数在递归循环中进行替换,直到它改变字符串的大小。假设第3列是一个varchar(10),包含“abcd”。第2列包含“b”。然后,它将替换“1”和“Column2”在Column3中出现的所有Column2

第一次更换(“b”表示“1b”):

第二次更换:

"a11bcd"
它一直在继续

"a111bcd"
"a1111bcd"
"a11111bcd"
"a111111bcd"
下次它将尝试在varchar(10)上放置一个11个字符的字符串


您应该定义自己的函数(使用T-SQL)只运行字符串一次,并在替换后从替换后继续,而不是从右下一个字符开始。

能否举例说明您希望数据的外观?我认为你的代码没有达到你想要的效果。第3列:“测试数据0200”在它被替换后,我们需要显示:“测试数据10200”@gordonlinoff该列设置为nvarchar(255),为字符串留出了足够的空间。
"a11bcd"
"a111bcd"
"a1111bcd"
"a11111bcd"
"a111111bcd"