如何在 oracle 中使用 LIKE 运算符获取值范围?

how to fetch range of values using LIKE operator in oracle?

我的数据库我想 select 使用 LIKE 运算符获得 A15-A19 的数据,但无法获得所需的结果。 我将代码编写为 SELECT * FROM MASTER_RULE WHERE VALUE BETWEEN LIKE 'A15%' AND 'A19%',还尝试将正则表达式设为 SELECT * FROM MASTER_RULE WHERE REGEXP_LIKE(value, 'A[1-9]') 。但是正则表达式给出了所有未指定范围 15-19 的记录。

如何实现这个解决方案?

您的第一个查询不正确,它有一个您不需要的额外关键字。

这是regexp_like解决方案:

SELECT * FROM MASTER_RULE WHERE REGEXP_LIKE(value, '^A[1][5-9]')

Here is a demo


更新:

这是“BETWEEN SOLUTION”:

SELECT * 
FROM MASTER_RULE 
WHERE substr(value, 2,length(value)-1) between 15 AND 19

您可以只使用常规字符串比较:

where value >= 'A15' and
      value < 'A20'

不仅如此简单,而且代码还可以利用 value.

上的索引

正如您在评论中提到的,您的数据类似于 A15、A16、A17。等你也可以用简单的子句来满足你的要求。

SELECT * FROM MASTER_RULE WHERE VALUE in ('A15','A16','A17','A18,'A19');