Ich habe eine Tabelle, die eine Liste von 13-stelligen Nummern enthält.Verwenden von Dekodierung für Fälle der Parameterpositionierung
Ich möchte Informatica verwenden, um diese Zahlen zu brechen und sie basierend auf Fällen zu trennen.
Zum Beispiel habe ich die Nummer 1196804120316. Für den ersten Fall möchte ich nur die zwei Ziffern nach dem 68 nehmen. In unserem Beispiel extrahiere ich die Nummer 04 und speichere sie in einer Spalte.
Der SQL-Code für sich ist:
CASE WHEN ODS_CI_RPT.ADMIN.REGEXP_LIKE(DEC_REGISTRN_NBR,'^(19|20)?[0-9]{2}-[0-9]{2}-[0-9]{5,6}$')
THEN
ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'.*-([0-9]{2})-.*','\1',1,1)
ELSE '05'
END
AS
STATE_CODE
Der nächste Fall ist die Zahl nach 19 und speichert es zu nehmen. In diesem Fall wird die 68. Die SQL ist:
CASE WHEN ODS_CI_RPT.ADMIN.REGEXP_LIKE(DEC_REGISTRN_NBR,'^(19|20)?[0-9]{2}-[0-9]{2}-[0-9]{5,6}$') THEN
ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'^([0-9]{2,4})-.*','\1',1,1)
ELSE ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'^([0-9]{4})-.*','\1',1,1)
END
AS
D_BIRTH_YEAR,
Wie würde ich dies mit decode in informatica implementieren?
Die reguläre Ausdrücke scheinen zu versuchen, Zahlen mit Bindestrich in ihnen übereinstimmen. Aber die Nummer, die Sie versuchen übereinzustimmen, hat keinen Bindestrich '-' drin? – Samik
Die Zahl '1196804120316' konnte nicht mit der Regex'^(19 | 20) übereinstimmen? [0-9] {2} - [0-9] {2} - [0-9] {5,6} $ ' – Samik
Ich werde ein Punt nehmen und sagen, dass Sie die Zeichenfolge in mehrere Spalten mit SUBSTR() in den Ausdruck der einzelnen Spalten und dann wenden Sie Ihre Logik auf die kleineren Felder –