Seriennummer aus String SQL Netezza extrahieren

Oct 07 2020

Bitte ich brauche eine Abfrage, die die Seriennummer aus dem Logmsg extrahieren könnte. Das Schwierige ist, dass sie keinem bestimmten Muster folgt, es kein festes Trennzeichen gibt und die Serienlänge nicht immer gleich ist

|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                   |

Das Ergebnis wird wie folgt aussehen:

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

Antworten

1 GordonLinoff Oct 07 2020 at 17:59

Eine Methode ist regexp_replace(), aber Sie haben verschiedene Formate für das Folgende serial. Damit:

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

Dies wird in beantwortet https://stackoverflow.com/a/64254966/14311638

Verwenden Sie eine Kombination aus regexp_extract_all_spund get_value_varcharzusammen mit dem richtigen Regex-Muster