繁体   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