2017-12-01 1 views
0

Ich habe eine Spalte, die Daten wie dies mit:Ich möchte eine Zeichenfolge extrahieren vor und nach einem bestimmten Vorkommen eines bestimmten Zeichens in SQL

/hey[my]/file/exec[jhwwdfbfjuneinfcvdkvnkdvn] 

Ich möchte eine SQL-Abfrage schreiben, nur zu holen " Datei "aus dieser Spalte. Ich möchte die Zeichenfolge nach dem 3. Vorkommen von '/' und vor dem zweiten Vorkommen von '/' Zeichen trimmen. Datei-String ist dynamisch, für jeden Datensatz ist der Dateiname unterschiedlich und kann daher nicht verwendet werden.

SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('/', col))) + 1, LEN(col) - LEN(LEFT(col, CHARINDEX ('/', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX ('/', col))) - 1); 

Ergebnis - LINE 1: SELECT SUBSTRING(s.value, LEN(LEFT(s.value, charindex ('/', ... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.

Datentyp s.value ist Text. Ich verwende diese Abfrage in Postgresql-Datenbank.

Ich weiß nicht, wie Sie das Auftreten in SQL-Abfrage geben.

+1

Bitte verwenden Sie keine Tags, die nicht auf Ihre Frage zutreffen. Ich habe die Datenbank-Tags entfernt, da unklar ist, welche Datenbank Sie tatsächlich verwenden. Bitte fügen Sie das Tag * nur * die Datenbank, die Sie tatsächlich verwenden, hinzu –

+1

Gut! Wenn du das machst, wenn du auf irgendein Problem gestoßen bist, komm zurück und fühle dich frei zu fragen! –

+0

Zeigen Sie uns db Schema, Beispieldaten, aktuelle und erwartete Ausgabe. \t Bitte lesen Sie [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein großartiger Ort, um [** START **] (http://spaghettiba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) um zu erfahren, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –

Antwort

0

Sie könnten eine Sache tun, teilen Sie diese Zeichenfolge in Array von Split-String und nehmen Sie Intervall, das Sie in Fall 3 wäre es Intervall würde ich denke.

So, hier ist das einfache Beispiel

SELECt split_part(FirstName, '/', 3)) As firstindex,firstname from Persons_details; 

diese Syntax versuchen und lassen Sie mich wissen, wenn es das ist, was Sie wollen.

+0

FEHLER: Funktion substring_index (Text, unbekannt, ganze Zahl) existiert nicht LINE 1: trim (substring_index (s.value, '/', 3)) als Details, r.ho ... ^ TIPP: Nein Funktion entspricht dem angegebenen Namen und den angegebenen Argumenttypen. Möglicherweise müssen Sie explizite Typumwandlungen hinzufügen. –

+0

Warum du unbekannt setzt? Wie lautet der Name Ihrer Spalte? – Krishna

+0

Spaltenname ist s.value –

Verwandte Themen