[英]How to update text using “regular expressions” in SQL Server?
在SQL Server數據庫表的列中,該值的格式為X=****;Y=****;Z=5****
,其中星號表示任意長度和任何值的字符串。 我需要做的是將5更改為4,並保持其余字符串不變。
有沒有辦法使用正則表達式之類的東西來實現我想做的事情? 如果不使用正則表達式,可以完全做到嗎?
遺憾的是,MS SQL沒有任何內置的正則表達式支持(盡管可以通過CLR添加),但是如果格式是固定的,則要更改的部分是Z=5
到Z=4
則使用REPLACE
應該可以:
REPLACE(your_string,'Z=5','Z=4')
例如:
declare @t table (str varchar(max))
insert @t values
('X=****;Y=****;Z=5****'),
('X=****;Y=**df**;Z=3**sdf**'),
('X=11**;Y=**sdfdf**;Z=5**')
update @t
set str = replace(str,'Z=5','Z=4')
-- or a slightly more ANSI compliant and portable way
update @t
set str = SUBSTRING(str,0, CHARINDEX('Z=5', str)) + 'Z=4' + SUBSTRING(str, CHARINDEX('Z=5', str)+3,LEN(str))
select * from @t
str:
X=****;Y=****;Z=4****
X=****;Y=**df**;Z=3**sdf**
X=11**;Y=**sdfdf**;Z=4**
我們需要更多信息。 在什么情況下應將5替換為4? 如果它只是在Z =之后的第一個字符處出現,那么您只需...
set Col = Replace(Col,'Z=5','Z=4')
或者,您是否只想在列值中的任何地方用4替換5。 在這種情況下,您顯然會...
set Col = Replace(Col,'5','4')
也許您的意思是在Z =之后的值內的任何地方都應該用5替換為5,這會更困難。
update Table set Field = replace(Field, ';Z=5', ';Z=4')
並希望您的星號數據不包含分號和等號...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.