如何在 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]')
更新:
这是“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');
我的数据库我想 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]')
更新:
这是“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');