我使用的是sql server mgmt studio。我正在尝试使用正则表达式执行UPDATE查询和REPLACE,以去除内部路径。它似乎运行不正常。在SQL中调用regex还有其他方法吗?
UPDATE dbo.Table
SET Path = REPLACE(Path , '.+?(?=Data)', '')
我基本上想离开
\somepathanotherpathDatafile.txt
至DataFile.txt
路径会有变化,所以我试图使用regex删除单词Data
之前的所有字符
我的正则表达式是"+?(?=Data)",它似乎在Textpad中有效,但在SQL中无效。
SQL server中不支持regexp。这可以使用substring
和charindex
函数来完成。
UPDATE dbo.Table
SET Path = 'Data' + SUBSTRING(path,CHARINDEX('Data',path)+len('Data'),len(path))
WHERE CHARINDEX('Data',path) > 0
您可以使用reverse
和charindex
来执行此操作:
UPDATE dbo.Table
SET path =
case when path like '%\%\%'
then substr(path, 1-charindex('\', reverse(path),
charindex('\', reverse(path))+1
)
)
else path
end
这将找到倒数第二个反斜杠,并取其后面的字符。case when
用于处理包含少于两个反斜杠的路径。