我正在使用sql server mgmt studio。我尝试使用正则表达式来删除内部路径,并使用REPLACE进行UPDATE查询。它似乎没有正常工作。我还需要在SQL中调用regex吗?
UPDATE dbo.Table
SET Path = REPLACE(Path , '.+?(?=Data)', '')
我想基本上来自
\\somepath\anotherpath\Data\file.txt
至Data\File.txt
路径会有变化,因此我尝试使用正则表达式删除单词Data\
之前的所有字符
我的正则表达式是" +?(?=数据)"这似乎在Textpad中找不到,但在SQL中找不到。
答案 0 :(得分:0)
SQL Server中没有正则表达式支持。这可以使用substring
和charindex
函数来完成。
UPDATE dbo.Table
SET Path = 'Data\' + SUBSTRING(path,CHARINDEX('\Data\',path)+len('\Data\'),len(path))
WHERE CHARINDEX('\Data\',path) > 0
答案 1 :(得分: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
用于处理包含少于两个反斜杠的路径。