[英]not understanding regexp_like in Oracle
例如,我在查詢中的 With 子句中定義了以下示例:
'.+d\$'
作為 dual 的sec_level_pattern
現在我可以在 select 查詢中看到以下情況:
not regexp_like(name,sec_level_pattern)
name
是我的rd_tst
表中的列。
條件regexp_like
在這里檢查什么? 我幾乎沒有看到關於regexp_like
的問題,但不明白我在這里的用例中實際會檢查什么。
我需要更改什么才能使
sec_level_pattern
返回所有名稱?
您的示例數據似乎具有以下格式:
.GTX
; 然后您需要一個匹配相同內容的正則表達式,例如:
SELECT *
FROM table_name
WHERE REGEXP_LIKE( names, '^[A-Z]{2}[A-Z0-9]{10}\.GTX$' );
對於您的示例數據:
CREATE TABLE table_name ( Names ) AS
SELECT 'AT0000730007.GTX' FROM DUAL UNION ALL
SELECT 'CH0012032048.GTX' FROM DUAL UNION ALL
SELECT 'DE0005550602.GTX' FROM DUAL UNION ALL
SELECT 'DE0007236101.GTX' FROM DUAL UNION ALL
SELECT 'DE000A1EWWW0.GTX' FROM DUAL UNION ALL
SELECT 'DE000ENAG999.GTX' FROM DUAL UNION ALL
SELECT 'DE000TUAG000.GTX' FROM DUAL UNION ALL
SELECT 'FI0009000681.GTX' FROM DUAL UNION ALL
SELECT 'FR0000120172.GTX' FROM DUAL UNION ALL
SELECT 'FR0000125007.GTX' FROM DUAL UNION ALL
SELECT 'IT0003132476.GTX' FROM DUAL UNION ALL
SELECT 'NL0000235190.GTX' FROM DUAL UNION ALL
SELECT 'NL0011794037.GTX' FROM DUAL UNION ALL
SELECT 'SE0000148884.GTX' FROM DUAL;
返回所有名稱:
| 姓名 | |:---------------- | | AT0000730007.GTX | | CH0012032048.GTX | | DE0005550602.GTX | | DE0007236101.GTX | | DE000A1EWWW0.GTX | | DE000ENAG999.GTX | | DE000TUAG000.GTX | | FI0009000681.GTX | | FR0000120172.GTX | | FR0000125007.GTX | | IT0003132476.GTX | | NL0000235190.GTX | | NL0011794037.GTX | | SE0000148884.GTX |
db<> 在這里擺弄
這種模式:
'.+d\$'
真的是字符串。 它正在尋找至少一個字符(通常是非換行符),后跟小寫字母'd'
,然后是文字'$'
。 所以,這匹配:
Xd$
123d$abc
它等同於: like '%_d$%'
。
您很可能想要更合理'\d+$'
。 這將匹配任何以數字結尾的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.