actionbrowser.com
Wie wähle ich einen Teilstring in Oracle SQL bis zu einem bestimmten Zeichen aus? 82 Angenommen, ich habe eine Tabellenspalte mit folgenden Ergebnissen: ABC_blahblahblah DEFGH_moreblahblahblah IJKLMNOP_moremoremoremore Ich möchte in der Lage sein, eine Abfrage zu schreiben, die diese Spalte aus dieser Tabelle auswählt, aber nur die Teilzeichenfolge bis zum Unterstrich (_) zurückgibt. Beispielsweise: ABC DEFGH IJKLMNOP Die SUBSTRING-Funktion scheint der Aufgabe nicht gewachsen zu sein, da sie positionsbasiert ist und die Position des Unterstrichs variiert. Ich dachte über die TRIM-Funktion nach (speziell die RTRIM-Funktion): SELECT RTRIM ( 'listofchars' FROM somecolumn) FROM sometable Aber ich bin mir nicht sicher, wie ich das zum Laufen bringen soll, da es nur eine bestimmte Liste / einen bestimmten Satz von Zeichen zu entfernen scheint und ich wirklich nur nach den Zeichen bin, die zum Unterstrich führen. Antworten: 138 Wenn Sie eine Kombination aus SUBSTR, INSTR und NVL (für Zeichenfolgen ohne Unterstrich) verwenden, erhalten Sie das, was Sie möchten: SELECT NVL ( SUBSTR ( 'ABC_blah', 0, INSTR ( 'ABC_blah', '_') -1), 'ABC_blah') AS output FROM DUAL Ergebnis: output ------ Verwenden: SELECT NVL ( SUBSTR ( t. SQL => String-Funktionen. column, 0, INSTR ( t. column, '_') -1), t. column) AS output FROM YOUR_TABLE t Referenz: SUBSTR INSTR Nachtrag Wenn Sie Oracle10g + verwenden, können Sie Regex über REGEXP_SUBSTR verwenden.
', ' ', 1); Diese Anweisung gibt dann die folgende Ergebnistabelle zurück: ordinal 1 2 3 4 5 Beispiele A. Teilen einer Zeichenfolge mit durch Trennzeichen getrennten Werten (CSV) Analysieren einer durch Komma getrennten Liste von Werten und Zurückgeben aller nicht leeren Token: DECLARE @tags NVARCHAR(400) = 'clothing, road,, touring, bike' SELECT value FROM STRING_SPLIT(@tags, ', ') WHERE RTRIM(value) <> ''; STRING_SPLIT gibt eine leere Zeichenfolge zurück, wenn zwischen dem Trennzeichen nichts vorhanden ist. Zeichenkette ab Leerzeichen abschneiden - wer-weiss-was.de. Die Bedingung RTRIM(value) <> '' entfernt leere Token. B. Teilen einer Zeichenfolge mit durch Trennzeichen getrennten Werten in einer Spalte Die Produkttabelle verfügt über eine Spalte mit einer durch Komma getrennte Liste von Tags, wie in diesem Beispiel dargestellt wird: ProductId Name Tags Full-Finger Gloves clothing, road, touring, bike LL Headset bike HL Mountain Frame bike, mountain Die folgende Abfrage wandelt jede Tagliste um und verknüpft sie mit der ursprünglichen Zeile: SELECT ProductId, Name, value FROM Product CROSS APPLY STRING_SPLIT(Tags, ', '); Hier ist das Resultset.
+$", "$1"); //Linq string start3 = new string (source. TakeWhile(c => c! = '-'). ToArray()); //Zu Fuss string start4 = string; int i = -1; while (source[++i]! = '-' && i <) start4 += source[i]; Bei eher einfacher Aufgabenstellung wie 'kopiere bis Trennzeichen' sind Regex und Linq eher übertrieben. Datenbanken und SQL: Eine praxisorientierte Einführung mit Anwendungen in ... - Edwin Schicker - Google Books. Christoph Hallo N., das performanteste ist hier normal das IndexOf/SubString Methoden. string alter = "BlauesAuto - Rotes Auto"; // ohne Fehlerbehandlung string neuer = bstring(0, dexOf( '-')); (neuer); ciao Frank
VBA InStr-Funktion - VBA zum Ermitteln der Position von Zeichen, Zeichenfolgen oder Text Angenommen, ich habe eine Tabellenspalte mit folgenden Ergebnissen: ABC_blahblahblah DEFGH_moreblahblahblah IJKLMNOP_moremoremoremore Ich möchte in der Lage sein, eine Abfrage zu schreiben, die diese Spalte aus dieser Tabelle auswählt, aber nur die Teilzeichenfolge bis zum Unterstrich (_) zurückgibt. Oracle sql substring ab bestimmten zeichen. Zum Beispiel: ABC DEFGH IJKLMNOP Die SUBSTRING-Funktion scheint der Aufgabe nicht gewachsen zu sein, da sie positionsbasiert ist und die Position des Unterstrichs variiert. Ich habe über die TRIM-Funktion nachgedacht (speziell über die RTRIM-Funktion): SELECT RTRIM('listofchars' FROM somecolumn) FROM sometable Aber ich bin mir nicht sicher, wie ich das zum Laufen bringen soll, da es nur eine bestimmte Liste / einen bestimmten Satz von Zeichen zu entfernen scheint und ich wirklich nur nach den Zeichen bin, die zum Unterstrich führen. Wenn Sie eine Kombination aus SUBSTR, INSTR und NVL (für Zeichenfolgen ohne Unterstrich) verwenden, erhalten Sie das, was Sie möchten: SELECT NVL(SUBSTR('ABC_blah', 0, INSTR('ABC_blah', '_')-1), 'ABC_blah') AS output FROM DUAL Ergebnis: output ------ ABC Verwenden: SELECT NVL(SUBSTR(, 0, INSTR(, '_')-1), ) AS output FROM YOUR_TABLE t Referenz: SUBSTR INSTR Nachtrag Wenn Sie Oracle10g + verwenden, können Sie Regex über REGEXP_SUBSTR verwenden.
Dies kann einfach mit REGEXP_SUBSTR erfolgen. Benutzen Sie bitte REGEXP_SUBSTR ( 'STRING_EXAMPLE', '[^_]+', 1, 1) Dabei ist STRING_EXAMPLE Ihre Zeichenfolge. Versuchen: SELECT from dual Es wird Ihr Problem lösen. Oracle sql substring ab bestimmten zeichen bank. Sie müssen die Position des ersten Unterstrichs (mit INSTR) ermitteln und dann den Teil des Strings mit substr vom ersten Zeichen bis (pos-1) abrufen. 1 select 'ABC_blahblahblah' test_string, 2 instr ( 'ABC_blahblahblah', '_', 1, 1) position_underscore, 3 substr ( 'ABC_blahblahblah', 1, instr ( 'ABC_blahblahblah', '_', 1, 1) -1) result 4 * from dual SQL > / TEST_STRING POSITION_UNDERSCORE RES ---------------- ------------------ --- ABC_blahblahblah 4 ABC Instr Dokumentation Susbtr Dokumentation SELECT REGEXP_SUBSTR ( 'STRING_EXAMPLE', '[^_]+', 1, 1) from dual ist die richtige Antwort, wie von user1717270 gepostet Wenn Sie verwenden INSTR, erhalten Sie die Position für eine Zeichenfolge, die davon ausgeht, dass sie "_" enthält. Was ist, wenn es nicht so ist? Nun, die Antwort ist 0.