SQL 正则表达式 FIND & 替换单词、短语或路径之前的所有内容



我使用的是sql server mgmt studio。我正在尝试使用正则表达式执行UPDATE查询和REPLACE,以去除内部路径。它似乎运行不正常。在SQL中调用regex还有其他方法吗?

UPDATE dbo.Table
SET Path = REPLACE(Path , '.+?(?=Data)', '')

我基本上想离开

\somepathanotherpathDatafile.txtDataFile.txt

路径会有变化,所以我试图使用regex删除单词Data之前的所有字符

我的正则表达式是"+?(?=Data)",它似乎在Textpad中有效,但在SQL中无效。

SQL server中不支持regexp。这可以使用substringcharindex函数来完成。

UPDATE dbo.Table
SET Path = 'Data' + SUBSTRING(path,CHARINDEX('Data',path)+len('Data'),len(path))
WHERE CHARINDEX('Data',path) > 0

您可以使用reversecharindex来执行此操作:

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用于处理包含少于两个反斜杠的路径。

最新更新