我正在寻找聪明的想法,只更新列中的字符串的一部分。有很多类似的问题,但我没有找到方法。
例如,我有专栏varchar(10)
1234|5|6789X
____________
2134|1|71891
如何在不触及其余字符串的情况下轻松更新字符串的第5个元素,没有模式。
我正在尝试使用patindex
& substring
答案 0 :(得分:4)
使用
STUFF(Column_Name,Char_Index_Start_Position,Lenght_to_Replace,Replaced_string)
为您的案例尝试
STUFF(column_name,5,1,'1')
<强> https://briancaos.wordpress.com/2014/06/12/sitecore-users-custom-profile-properties/ 强>
答案 1 :(得分:1)
SELECT Stuff('1234|5|6789X', 6, 1, '1')
答案 2 :(得分:0)
由于您的专栏是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
是您的表名,col
是您的列名,并将'X'
替换为您想要替换的内容。
说明:使用CASE
的原因是因为如果STUFF
遇到上述语句中没有第5个字符的字符串,则会返回NULL
。< / p>