REPLACE函数对于SQL服务器不会改变该值。

16 浏览
0 Comments

REPLACE函数对于SQL服务器不会改变该值。

该列的数据类型是NVARCHAR(MAX)

我想要在我的值中添加一个字符串。

UPDATE Winner
SET [Text] = CAST(REPLACE(CAST([Text] AS NVARCHAR(MAX)), 'xxx You won ticket xxx', 'xxx You won semi final ticket xxx') AS NTEXT)
WHERE Id = 'xxxxxxx'

这并不起作用。

更新后没有任何变化 - 值保持不变。

我该如何替换我的文本?

0
0 Comments

在SQL Server中,使用REPLACE函数来替换文本中的特定值是一种常见的操作。然而,有时候使用REPLACE函数可能无法改变值。下面将探讨这个问题的原因以及解决方法。

问题的原因:

出现这个问题的原因是REPLACE函数在使用时需要指定要替换的文本值和要替换成的新值。在上述代码中,没有正确指定要替换的文本值和要替换成的新值。因此,即使使用了REPLACE函数,也无法改变值。

解决方法:

要解决这个问题,可以使用SQL Server中的STUFF函数。STUFF函数可以在文本中指定的位置插入或删除字符。下面是如何使用STUFF函数来解决这个问题的示例代码:

DECLARE @Text VARCHAR(255) = 'xxx You won ticket xxx' -- whatever data type you have
DECLARE @NewValue VARCHAR(255) = 'xxx You won semi final ticket xxx' -- whatever data type you have
UPDATE Winner
     SET [Text] = STUFF([Text], PATINDEX('%' + @Text + '%', [Text]), LEN(@Text), @NewValue)
WHERE Id = 'xxxxxxx'

在上述代码中,我们首先声明了要替换的文本值(@Text)和要替换成的新值(@NewValue)。然后,使用UPDATE语句将STUFF函数应用于Winner表的Text列。STUFF函数的参数包括要替换的文本列、要替换的文本值的起始位置(使用PATINDEX函数来查找要替换的文本值的位置)、要替换的文本值的长度和要替换成的新值。最后,通过WHERE子句指定了要更新的行。

通过使用STUFF函数,我们可以正确地替换文本中的特定值,并解决REPLACE函数无法改变值的问题。

0