sql - 不理解 Oracle 中的 regexp_like
问题描述
例如,我在查询中的 With 子句中定义了以下示例:
'.+d\$'
从sec_level_pattern
双
现在我可以在选择查询中看到以下条件:
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<>在这里摆弄
推荐阅读
- node.js - 运行 npm 以在 ADO 存储库中生成包以允许它通过 terraform 创建管道时出错
- android - 我应该如何在使用视图绑定的活动中获取片段?
- python - 如何在 pandas 中读取这个 json 文件?
- java - Spring boot/quartz webapp 不发布“actuator/quartz”端点
- python - 为什么 Matplotlib 用不正确的 Y 绘制值?
- php - 如何在 laravel 8 中自定义默认分页?
- python - Python Selenium 按类名将文件上传到网站
- php - 删除 .php 会使 .inc 出现问题
- python - 如何从我的 .png 图像中删除灰色背景
- c# - 如何手动触发 JsonSerialization 错误