如何使用SQL Server中的“正则表达式”更新文本?

时间:2014-10-27 22:21:29

标签: sql sql-server regex sql-server-2008

在SQL Server数据库表的列中,该值的格式为X=****;Y=****;Z=5****,其中星号表示任意长度和任何值的字符串。我需要做的是将5更改为4并保持字符串的其余部分不变。

有没有办法使用正则表达式之类的东西来实现我想做的事情?如果不使用正则表达式,是否可以完成?

3 个答案:

答案 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')

让我们希望您的带星号的数据不包含分号和等号......