2017-05-10 3 views
0

Ich suche, den gesamten Text bis zu einem '\' (Backslash) zu extrahieren.SQL Select-Anweisung, bis ein Zeichen

Der Teilstring ist erforderlich, um alle voranstehenden Zeichen (17 insgesamt) zu entfernen, und so möchte ich alle nach dem 17. zurückgeben, bis es auf einen umgekehrten Schrägstrich trifft.

Ich habe versucht, mit charindex, aber es scheint nicht zu stoppen bei \ es gibt Zeichen danach zurück. Mein Code ist wie folgt

SELECT path, substring(path,17, CHARINDEX('\',Path)+ LEN(Path)) As Data 
    FROM [Table].[dbo].[Projects] 
    WHERE Path like '\ENQ%\' AND 
    Deleted = '0' 

Beispiel

Die unten Screenshot die grundlegende Abfrage zeigt und führen also die gesamte Zeichenfolge Image 1

ich dann String verwenden, um die ersten X Zeichen zu entfernen, da es wird immer die gleiche Menge an Verfahren Zeichen

enter image description here

Aber was Im eigentlich nach (bezogen auf dem obigen Ergebnis) den „Prüfung 1“ „Testing 2“ und „Testing ABC“ Abschnitt

+0

Zeigen Sie uns einige Eingangsdaten für alle Fälle, und erwartete Ausgabe für jeden Fall verwenden. –

+0

Sorry, ich verstehe nicht - ich gebe nicht in die Tabelle ein. Meinst du Einsatz einfügen, die Beispieldaten einfügt und dann diese Daten abfragt? – Shabbaranks

Antwort

1

Der Teil erforderlich ist, alle ausgeh Zeichen zu entfernen (insgesamt 17) und also würde ich gerne alle nach dem 17. zurückgeben, bis es auf einen Backslash stößt.

select 
substring(path,17,CHARINDEX('\',Path)-17) 
from 
table 

Invalid length parameter passed to the LEFT or SUBSTRING function Fehler zu überwinden, können Sie CASE

select 
    substring(path,17, 
    CASE when CHARINDEX('\',Path,17)>0 
     Then CHARINDEX('\',Path)-17) 
     else VA end 
      ) 
    from 
    table 
+0

Danke, wenn ich Ihr Beispiel verwende, bekomme ich ungültige Länge Parameter an die LINKE oder SUBSTRING-Funktion übergeben. – Shabbaranks

+0

Es kann sein, dass das length-Feld negative Werte erhält. Es könnten einige Felder sein, die nicht '\' haben. Wenn wir also 17 subtrahieren, wird der Wert negativ.Können Sie Beispieldaten hinzufügen – TheGameiswar

+0

@Shabbaranks: siehe aktualisierte Antwort – TheGameiswar

Verwandte Themen