簡體   English   中英

正則表達式 Oracle

[英]Regular expression Oracle

我正在學習使用正則表達式,並且我正在使用它們通過使用 Oracle 11 中的 REGEXP_LIKE 來限制搜索查詢的結果。放置一個可用數據的示例,我有以下內容:

Plan navegación 200 MB
Plan navegación 1 GB
Plan navegación 1 GB
Plan de navegacion 3G
Plan de navegacion 4G
Plan de navegacion 3G Empresarial
Plan de navegacion 4G Empresarial
Plan de servicios 3G
Plan de servicios 4G
Plan navegación Datos

我希望這個結果僅限於以下(僅限 3G、4G):

Plan de navegacion 3G
Plan de navegacion 4G
Plan de navegacion 3G Empresarial
Plan de navegacion 4G Empresarial

我正在使用以下搜索模式,但我沒有正確過濾結果:

  • 上(PLAN_GSM),'(NAVEGA){1}|(3G|4G|5G)'
  • Upper(PLAN_GSM),' ((NAVEGA)+) (3G|4G)+'

我做了幾次測試,沒有找到解決方案。 有人可以給我提示嗎?

您可以簡單地使用 LIKE,如下所示:

select *
from mytable
where PLAN_GSM LIKE 'Plan de navegacion _G%';

或使用 REGEXP_LIKE,如下所示:

select *
from mytable
where REGEXP_LIKE(PLAN_GSM, '^Plan de navegacion (3|4|5)G(*)');

SQL 小提琴演示

參考

Oracle/PLSQL:網絡技術上的 REGEXP_LIKE 條件

你可以使用這個:

SELECT * FROM mytable 
WHERE REGEXP_LIKE(mycolumn, '\APlan de navegacion \dG.*\z', 'c');
  • \\d代表一個數字
  • \\A是字符串的開頭
  • .*貪婪地匹配任何字符
  • \\z是字符串的結尾
select * 
from all_tab_columns 
where COLUMN_NAME like '%MAIN%ACCOUNT%LINK%CODE%N%' and TABLE_NAME like 'CB%' and not regexp_like(table_name,'[0-9]')

上面的查詢將獲取唯一沒有內容數量的對象。

select *
from all_tab_columns 
where COLUMN_NAME like '%MAIN%ACCOUNT%LINK%CODE%N%' and TABLE_NAME like 'CB%' and not regexp_like(table_name,'[0-9]')

上面的查詢將只獲取帶有數字內容的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM