[英]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.