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

时间:2016-06-10 19:24:11

标签: sql sql-server

我正在使用sql server mgmt studio。我尝试使用正则表达式来删除内部路径,并使用REPLACE进行UPDATE查询。它似乎没有正常工作。我还需要在SQL中调用regex吗?

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

我想基本上来自

\\somepath\anotherpath\Data\file.txtData\File.txt

路径会有变化,因此我尝试使用正则表达式删除单词Data\之前的所有字符

我的正则表达式是" +?(?=数据)"这似乎在Textpad中找不到,但在SQL中找不到。

2 个答案:

答案 0 :(得分:0)

SQL Server中没有正则表达式支持。这可以使用substringcharindex函数来完成。

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

答案 1 :(得分: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用于处理包含少于两个反斜杠的路径。