更新 MS SQL 列中的部分字符串

Updating a part of string in column MS SQL

我正在寻找只更新列中字符串的一部分的好主意。有很多类似的问题,但我还没有找到适合我的方法。

例如我有列varchar(10)

1234|5|6789X
____________
2134|1|71891

如何在不触及字符串其余部分的情况下轻松更新字符串的第 5 个元素,没有模式。

我正在尝试使用 patindex & substring

使用

STUFF(Column_Name,Char_Index_Start_Position,Lenght_to_Replace,Replaced_string)

针对你的情况试试

STUFF(column_name,5,1,'1')

STUFF()

怎么样Stuff

SELECT Stuff('1234|5|6789X', 6, 1, '1') 

由于您的专栏是 varchar(10),我假设您提供给我们的数据有问题

1234|5|6789X
____________
2134|1|71891

|5||1| 需要替换。

正如许多人已经指出的那样,您可以使用 STUFF

但是正确的实现方式是

SELECT CASE WHEN LEN (col) >4 THEN STUFF(col,5,1,'X')
ELSE col END FROM tbl

其中 tbl 是您的 table 名称,col 是您的列名称,并将 'X' 替换为您想要的替换内容。

解释:之所以使用CASE是因为如果STUFF在上述语句中遇到一个没有第5个字符的字符串,那么它returns NULL.