CREATE TABLE TABLE_NAME ( REASON_CODES ) AS
SELECT 'A00 VMC B10' FROM DUAL UNION ALL
SELECT 'A00 RTD B19' FROM DUAL UNION ALL
SELECT 'A09 RTD B19' FROM DUAL UNION ALL
SELECT 'ASD A10 B19' FROM DUAL UNION ALL
SELECT 'XYZ A20 RTD' FROM DUAL UNION ALL
SELECT 'ABC XYZ A25' FROM DUAL UNION ALL
SELECT 'A26 RTD B19' FROM DUAL UNION ALL
SELECT 'A99 RNT B40' FROM DUAL;
查询:
SELECT *
FROM TABLE_NAME
WHERE REGEXP_SUBSTR( REASON_CODES, 'A\d{2}' ) BETWEEN 'A10' AND 'A25';
3条答案
按热度按时间h22fl7wq1#
可以使用子字符串
9o685dep2#
如果 您 只是 尝试 匹配
REASON_CODE
字符 串 的 开头 , 则 可以 执行 以下 操作 :中 的 每 一 个
这 相当于 scaisEdge 的 答案 , 但 它 可以 利用
REASON_CODE
列 上 的 索引 , 如果 首先 调用SUBSTR()
, 则 无法 使用 该 索引 。您 必须 使用
>=
和<
, 因为BETWEEN
包括 两 个 端点 , 并且 您 希望 匹配 所有 到 ( 但 不 包括A26
) 的 字符 串 。 您 不能 使用BETWEEN 'A10' AND 'A25'
, 因为 以A25
开头 并 包含 其他 字符 的 字符 串 高于 此 值 。rjjhvcjd3#
Oracle设置:
查询:
输出: