J'ai un tableau qui contient une liste de 13 chiffres. Je veux utiliser informatica pour décomposer ces nombres et les séparer en fonction des cas. Par exemple, j'ai le numéro 1196804120316. Pour le premier cas, je souhaite prendre seulement les deux chiffres après le 68. Dans notre exemple, j'extraire le numéro 04 et le stocker dans une colonne.Utilisation du décodage pour les cas de positionnement de paramètres
Le code SQL car il est:
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
Le cas suivant est de prendre le nombre après le 19 et le stocker. Dans ce cas, le 68. Le SQL est:
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,
Comment pourrais-je mettre en œuvre cela en utilisant decode dans informatica?
Les expressions régulières semblent essayer de faire correspondre des nombres avec des traits d'union. Mais le numéro que vous essayez de faire correspondre n'a pas de trait d'union «-» dedans? – Samik
Le nombre '1196804120316' ne pouvait pas correspondre à la regex'^(19 | 20)? [0-9] {2} - [0-9] {2} - [0-9] {5,6} $ ' – Samik
Je vais prendre un punt et dire que vous voulez diviser la chaîne en plusieurs colonnes en utilisant SUBSTR() dans l'expression de chacun et ensuite appliquer votre logique sur les champs plus petits –