我試圖只列出看起來像 DDDDDDDDDLLDDDD 的增值稅號,否則我必須列出 NULL https://i.stack.imgur.com/4PYR8.png
case when o.VAT_NUMBER= TO_char(o.VAT_NUMBER, '999999999LL9999') then o.VAT_NUMBER
else 'NULL' end as VAT_NUMBER,
很確定我很接近但仍然缺少一些東西:(
uj5u.com熱心網友回復:
我不熟悉您使用的增值稅號。如果我理解正確,您要查找的值似乎包含 9 位數字,后跟 2 Ls (?),后跟 4 位數字。Oracle 檔案說“L”代表當地貨幣符號(在您的情況下是 RP),所以 - 對于示例資料
SQL> with test (vat_number) as
2 (select '786633632R97685' from dual union all
3 select '121015206R77405' from dual union all
4 select '567299566RP9332' from dual
5 )
你可以試試
6 select vat_number,
7 case when regexp_like(vat_number, '\d {9}RP\d {4}') then vat_number
8 else 'null'
9 end as result
10 from test;
VAT_NUMBER RESULT
--------------- ---------------
786633632R97685 null
121015206R77405 null
567299566RP9332 567299566RP9332
SQL>
uj5u.com熱心網友回復:
您可以使用正則運算式^\d{9}[A-Z]{2}\d{4}$來匹配字串的開頭,然后是任何 9 個數字,然后是任何 2 個大寫字母,然后是任何 4 個數字,最后是字串的結尾:
CASE
WHEN REGEXP_LIKE( o.VAT_NUMBER, '^\d{9}[A-Z]{2}\d{4}$')
THEN o.VAT_NUMBER
ELSE NULL
END as VAT_NUMBER
如果您想要任何大小寫,請使用[a-zA-Z]or[[:alpha:]]或使匹配不區分大小寫。
注意:如果您在匹配中不包括字串的開頭和結尾,那么您可以匹配字串中間的子字串,而不是整個字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/516887.html
上一篇:獲取每組中第一行的串列
