Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Netezza字符串中提取串行数据_Sql_String_Netezza - Fatal编程技术网

从SQL Netezza字符串中提取串行数据

从SQL Netezza字符串中提取串行数据,sql,string,netezza,Sql,String,Netezza,请我需要一个可以从Logmsg中提取序列号的查询,困难的是它没有遵循特定的模式,没有固定的分隔符,序列长度也不总是相同的 |LogMsg | |------------------------------------------------------------------------------------------| |Cu

请我需要一个可以从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\u replace()
,但是下面的
serial
有不同的格式。因此:

select replace(replace(regexp_extract(logmsg, 'serial [^,]+'), 'serial ', ''), ':', '')
这一点可以用中文回答


结合使用
regexp\u extract\u all\u sp
get\u value\u varchar
以及正确的正则表达式模式

如果需要正则表达式,请参见Netezza支持regexp\u extract(),例如
regexp\u extract(logmsg,'\d[^,]*')
似乎从字符串中提取int,就像序列以字母开头一样,它将只提取类似于此序列的int:ZTERRTHJ9303771将是9303771是的,对不起。
序列号:
中的
是可选的吗?是的,它不位于每个序列号中。Gordon提供的查询运行良好,请Gordon提供的查询不适用于以下序列示例:Customer Receive CPE室内。序列号:ZTERRT1H9202990@AhmedMohammedAbdelKader . . . 也许你应该用更多的例子问一个新问题。