extraire le numéro de série de la chaîne SQL Netezza

Oct 07 2020

s'il vous plaît, j'ai besoin d'une requête qui pourrait extraire le numéro de série du Logmsg, le problème est qu'il ne suit pas un modèle spécifique, il n'y a pas de délimiteur fixe et la longueur de la série n'est pas toujours la même

|LogMsg                                                                                    |
|------------------------------------------------------------------------------------------|
|Customer Receive CPE Indoor. serial 21530369847SKA011094, user:ahmed.o.haraz              |
|Customer Receive CPE Indoor as change. serial :21530369847SK9078291, user:Abdullah.M160275|
|Customer Receive CPE Indoor as change. serial :T5D7S18802909825, user:ahmed.o.haraz       |
|Customer Receive CPE Indoor as change. serial :T5D7S18802909830, user:ahmed.o.haraz       |
|Customer Receive CPE Indoor. serial ZTERRTHJ9303771, user:Mohamed.E176246                 |
|Customer Returned CPE. serial :21530369847SKA011094, user:ahmed.o.haraz                   |

le résultat sera comme ci-dessous:

|Serial              |
|--------------------|
|21530369847SKA011094|
|21530369847SK9078291|
|T5D7S18802909825    |
|T5D7S18802909830    |
|ZTERRTHJ9303771     |
|21530369847SKA011094|

Réponses

1 GordonLinoff Oct 07 2020 at 17:59

Une méthode est regexp_replace(), mais vous avez différents formats pour ce qui suit serial. Alors:

select replace(replace(regexp_extract(logmsg, 'serial [^,]+'), 'serial ', ''), ':', '')
1 AniketKulkarni Oct 08 2020 at 09:37

Ceci est répondu dans https://stackoverflow.com/a/64254966/14311638

Utilisez une combinaison de regexp_extract_all_spet get_value_varcharavec le bon modèle de regex