我正在学习使用正则表达式,并且我使用它们来限制搜索查询的结果,使用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
我使用以下搜索模式,但我没有正确过滤结果:
我做了几次测试但找不到解决方案。有人可以给我提示吗?
答案 0 :(得分:1)
你可以简单地使用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(*)');
<强>参考强>:
答案 1 :(得分:0)
您可以使用:
SELECT * FROM mytable
WHERE REGEXP_LIKE(mycolumn, '\APlan de navegacion \dG.*\z', 'c');
\d
代表数字\A
是字符串的开头.*
贪婪地匹配任何字符\z
是字符串的结尾答案 2 :(得分:0)
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]')
上面的查询将仅获取具有数字内容的对象。