在SQL Server数据库表的列中,该值的格式为X=****;Y=****;Z=5****
,其中星号表示任意长度和任何值的字符串。我需要做的是将5更改为4并保持字符串的其余部分不变。
有没有办法使用正则表达式之类的东西来实现我想做的事情?如果不使用正则表达式,是否可以完成?
答案 0 :(得分:1)
MS SQL遗憾地没有任何内置的正则表达式支持(虽然它可以通过CLR添加)但是如果格式是固定的,那么你要更改的部分是Z=5
到{{1然后使用Z=4
应该可以工作:
REPLACE
例如:
REPLACE(your_string,'Z=5','Z=4')
答案 1 :(得分:0)
我们需要更多信息。在什么情况下应该用4代替?如果它就是Z =之后的第一个字符,那么你可以简单地做......
set Col = Replace(Col,'Z=5','Z=4')
或者,您是否只想在列值中的任意位置替换5和4。在这种情况下,你显然只是......
set Col = Replace(Col,'5','4')
或者你可能意味着在Z =之后的任何地方,5应该被4替换,这将更加困难。
答案 2 :(得分:0)
update Table set Field = replace(Field, ';Z=5', ';Z=4')
让我们希望您的带星号的数据不包含分号和等号......