regex - Oracle正则表达式匹配列值的多个部分
问题描述
想象一下,我有以下包含 2 列的数据库表
row1 AA.B.HOME.CCC.N111.DDDD
row2 RRR.BCD.HOME.CCC.N222.DDDD
row3 AAAA.B.WORK.EEEEE.N111.GGGGG
row4 AA.B.WORK.FFFF.N222.TT
我需要一个在输入中给出“HOME”和“111”的查询,只需要返回“row1”结果。
点的数量是固定的,但每个块的长度可以是可变的。“N111”程序段始终以 N 开头。
是否可以使用 Oracle 正则表达式?如果有一千行,它会有多重?
解决方案
您可以尝试如下查询。对于 1000 行,它应该执行得非常快。
WITH
sample_data (col1, col2)
AS
(SELECT 'row1', 'AA.B.HOME.CCC.N111.DDDD' FROM DUAL
UNION ALL
SELECT 'row2', 'RRR.BCD.HOME.CCC.N222.DDDD' FROM DUAL
UNION ALL
SELECT 'row3', 'AAAA.B.WORK.EEEEE.N111.GGGGG' FROM DUAL
UNION ALL
SELECT 'row4', 'AA.B.WORK.FFFF.N222.TT' FROM DUAL)
SELECT *
FROM sample_data
WHERE REGEXP_LIKE (col2, '\.HOME\..*\.N111\.');
推荐阅读
- https - 某些页面的 web2py 重定向到 https 功能
- ruby-on-rails - 即使我清除了数据库,为什么我的控制器仍然期望检索数据
- html - 如何设置初始比例元标记以适合身体宽度?
- java - 如何更新recyclerview中的相对时间?
- c++ - 如何解决已经在其他编译器上测试过的程序的编译错误(在代码 :: 块中)
- html - 如何在引导程序中垂直对齐一个div?
- c# - 如何将 CIDR 子网掩码转换为 HEX 格式?
- opencv - 慢速网络摄像头馈送 GTK
- node.js - 如何在 VSCode 中的 nodejs 中重置控制台颜色?
- reactjs - 如何从接口联合中过滤道具值