从字符串SQL Netezza中提取序列

问题描述

请我需要一个查询,该查询可以从Logmsg中提取序列号,困难的是它不遵循特定的模式,没有固定的定界符并且序列长度总是不相同

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

结果将如下所示:

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

解决方法

一种方法是regexp_replace(),但是serial之后的格式不同。所以:

select replace(replace(regexp_extract(logmsg,'serial [^,]+'),'serial ',''),':','')
,

此问题在https://stackoverflow.com/a/64254966/14311638

中回答

结合使用myList = [0,12,30,32] #column A for i in myList: holder = i temp_list=[i,] for x in range(10): #change range(10) to range(250) holder += 123 temp_list.append(holder) #print(temp_list) print(*temp_list,sep=' ') regexp_extract_all_sp以及正确的正则表达式模式

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...