Split dem VARCHAR-Datentyp in DB2 ruft einen Wert innerhalb
Ich habe eine VARCHAR
Spalte enthält 5 Informationen (2 CHAR(3)
und 3 TIMESTAMP
) getrennt mit '$
'.
CREATE TABLE MYTABLE (
COL VARCHAR(256) NOT NULL
);
INSERT INTO MYTABLE
VALUES
( 'AAA$000$2009-10-10 10:50:00$null$null$null' ),
( 'AAB$020$2007-04-10 10:50:00$null$null$null' ),
( 'AAC$780$null$2007-04-10 10:50:00$2009-04-10 10:50:00$null' )
;
Möchte ich zum extrahieren der 4. Feld ...
'AAA$000$2009-10-10 10:50:00$null$null$null'
^^^^ this field
... so etwas wie
SELECT SPLIT(COL, '$', 4) FROM MYTABLE
1
-----
'null'
'null'
'2009-04-10 10:50:00'
Ich bin auf der Suche, in dieser Reihenfolge :
- Eine DB2-build-string-Funktion
- Eine embeddable Aussage wie
SUBSTR(COL, POSSTR(COL)+1)...
- Eine Benutzer-definierte Funktion verhält sich wie
SPLIT
Präzision : ja, ich tun wissen, dass es nicht eine gute Idee zu haben, wie Spalten...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung:
DETERMINISTIC
und dieNO EXTERNAL ACTION
modifier, um in der Lage sein, um es in eineGROUP BY
- Klausel ?Ich bin sicher, dass es einen besseren Weg gibt, dies zu schreiben, aber hier ist 1 (SQL) - Lösung für den einfachen Fall gegeben. Könnte es sein umgeschrieben als eine gespeicherte Prozedur look für jede beliebige Zeichenfolge. Es kann auch einige 3rd party tools/Erweiterungen heraus zu helfen, w/split, die Sie wollen...
versuchen Sie dieses, es funktioniert!
Wenn Ihre DB2-version kann es tun, können Sie dann LOCATE_IN_STRING Funktion für gefunden, die position Ihrer Trennzeichen. Die LOCATE_IN_STRING Funktion gibt die Startposition einer Zeichenfolge und ermöglichen Ihnen die Wahl der N-TEN Instanz. Sie finden die Dokumentation dieser Funktion hier
Für Ihr Beispiel, Sie können diesen code verwenden :