2016-06-10 7 views
0

Ich benutze sql server mgmt studio. Ich versuche, eine UPDATE-Abfrage zusammen mit einem REPLACE mit einer Regex zu tun, um interne Pfadtrennung abzustreifen. Es scheint nicht richtig zu funktionieren. Gibt es eine andere Möglichkeit, Regex in SQL aufzurufen?SQL regex FIND & Ersetze alles vor einem Wort, einer Phrase oder einem Pfad

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

Ich wollte im Grunde von

gehen

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

Es wird Veränderungen auf den Pfaden sein, damit ich Regex zu verwenden bin versucht, alle Zeichen zu entfernen, bevor das Wort Data\

Mein regulärer Ausdruck ist "+? (? = Daten)", die scheint, in Textpad, aber nicht in SQL zu funktionieren.

+0

Hat eine der Antworten Ihren Anforderungen entsprochen? Könnten Sie etwas Feedback geben? – trincot

Antwort

0

Es gibt keine Regexp-Unterstützung in SQL Server. Dies kann mit den Funktionen substring und charindex erfolgen.

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

könnten Sie reverse und charindex, dies zu tun:

UPDATE dbo.Table 
SET path = 
     case when path like '%\\%\\%' 
      then substr(path, 1-charindex('\\', reverse(path), 
             charindex('\\', reverse(path))+1 
             ) 
        ) 
      else path 
     end 

Dies wird den zweitletzten Backslash, und nehmen Sie die Zeichen finden, die ihm folgen. Die case when ist da, um mit Pfaden umzugehen, die weniger als zwei umgekehrte Schrägstriche enthalten.

Verwandte Themen