Я пытаюсь вернуть совпадение только из строки, если IFF a другой шаблон сначала сопоставляется в Oracle, используя RegEx_Like
и RegExp_Substr
, но я получаю смешанные результаты.
Ниже приведен пример данных, которые у меня есть и что я пытаюсь получить из них:
+-----------------------------+---------+
| Data | Goal |
+-----------------------------+---------+
| 201301-P706466 JFK CLASSICS | P706466 |
| 201301-706466 WRI CLASSICS | 706466 |
| 201301 706466 JFK CLASSICS | 706466 |
| 201301 P706466 WRI CLASSICS | 706466 |
| 201910-MLB-CVG4 | NULL |
| 201209-JFK CLASSICS | NULL |
| 201203-WRI CLASSICS | NULL |
| 201209 JFK CLASSICS | NULL |
| 201203 WRI CLASSICS | NULL |
+-----------------------------+---------+
Запрос:
select pid.location
, pnm.pn as mpn
, pid.pn as pn
, pid.batch
, pid.goods_rcvd_batch as grb
, pid.sn
, pid.bin
, Case When RegExp_Like(pid.bin, ''''^\d{6}\-|^\d{6}\s'''') Then RegExp_Substr(pid.bin, ''''\d{6}|(P)\d{6}.*?(\d{6})|((P)\d{6})'''')
End As Bin_Esn
from pn_inventory_detail pid
join pn_interchangeable pni on pid.pn = pni.pn_interchangeable
join pn_master pnm on pni.pn = pnm.pn
where pid.installed_ac is null
and pid.owner is null
and pid.loan_category is null
and pid.nha_pn is null
Я пробовал разные варианты this , но на regex101, но, как вы увидите после перехода по ссылке, он соответствует больше, чем мне нужно.
Я думаю, что я могу идти по этому пути совсем неправильно, вот почему я здесь. Сказав это, какой шаблон работает для моего случая и является наиболее эффективным?