extraer serie de la cadena SQL Netezza

Oct 07 2020

por favor necesito una consulta que pueda extraer el número de serie del Logmsg, lo difícil es que no sigue un patrón específico, no hay delimitador fijo y la longitud de la serie no siempre es la misma

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

el resultado será el siguiente:

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

Respuestas

1 GordonLinoff Oct 07 2020 at 17:59

Un método es regexp_replace(), pero tiene diferentes formatos para lo que sigue serial. Entonces:

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

Esto se responde en https://stackoverflow.com/a/64254966/14311638

Use una combinación de regexp_extract_all_spy get_value_varcharjunto con el patrón de expresión regular correcto