trích xuất nối tiếp từ chuỗi SQL Netezza
Oct 07 2020
làm ơn, tôi cần một truy vấn có thể trích xuất số Serial # từ Logmsg, điều khó khăn là nó không tuân theo một mẫu cụ thể, không có dấu phân cách cố định và độ dài của sê-ri không giống nhau luôn
|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 |
kết quả sẽ như sau:
|Serial |
|--------------------|
|21530369847SKA011094|
|21530369847SK9078291|
|T5D7S18802909825 |
|T5D7S18802909830 |
|ZTERRTHJ9303771 |
|21530369847SKA011094|
Trả lời
1 GordonLinoff Oct 07 2020 at 17:59
Một phương pháp là regexp_replace(), nhưng bạn có các định dạng khác nhau cho những gì sau đây serial. Vì thế:
select replace(replace(regexp_extract(logmsg, 'serial [^,]+'), 'serial ', ''), ':', '')
1 AniketKulkarni Oct 08 2020 at 09:37
Điều này được trả lời trong https://stackoverflow.com/a/64254966/14311638
Sử dụng kết hợp regexp_extract_all_spvà get_value_varcharcùng với mẫu regex phù hợp