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|
2
Ahmed Mohammed Abdel Kader 7 oct. 2020 à 12:45

2 réponses

Meilleure réponse

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

select replace(replace(regexp_extract(logmsg, 'serial [^,]+'), 'serial ', ''), ':', '')
1
Gordon Linoff 7 oct. 2020 à 11:11

Cette question est répondue dans https://stackoverflow.com/a/64254966/14311638

Utilisez une combinaison de regexp_extract_all_sp et get_value_varchar avec le bon modèle de regex

1
Aniket Kulkarni 8 oct. 2020 à 02:37