我的数据库我想选择有a15-a19使用like运算符但不能得到所需结果的数据。我做的代码 SELECT * FROM MASTER_RULE WHERE VALUE BETWEEN LIKE 'A15%' AND 'A19%' 还尝试了正则表达式作为 SELECT * FROM MASTER_RULE WHERE REGEXP_LIKE(value, 'A[1-9]') . 但regexp给出了所有未指定范围15-19的记录。如何解决这个问题?
SELECT * FROM MASTER_RULE WHERE VALUE BETWEEN LIKE 'A15%' AND 'A19%'
SELECT * FROM MASTER_RULE WHERE REGEXP_LIKE(value, 'A[1-9]')
nfeuvbwi1#
您的第一个查询不正常,它有一个您不需要的额外关键字。下面是类似regexp\u的解决方案:
SELECT * FROM MASTER_RULE WHERE REGEXP_LIKE(value, '^A[1][5-9]')
这是一个演示更新:以下是“中间解决方案”:
SELECT * FROM MASTER_RULE WHERE substr(value, 2,length(value)-1) between 15 AND 19
snvhrwxg2#
您可以使用常规字符串比较:
where value >= 'A15' and value < 'A20'
这不仅简单,而且代码还可以利用 value .
value
mu0hgdu03#
正如你在评论中提到的,你的数据就像a15,a16,a17。你也可以用简单的in条款来达到你的要求。
SELECT * FROM MASTER_RULE WHERE VALUE in ('A15','A16','A17','A18,'A19');
3条答案
按热度按时间nfeuvbwi1#
您的第一个查询不正常,它有一个您不需要的额外关键字。
下面是类似regexp\u的解决方案:
这是一个演示
更新:
以下是“中间解决方案”:
snvhrwxg2#
您可以使用常规字符串比较:
这不仅简单,而且代码还可以利用
value
.mu0hgdu03#
正如你在评论中提到的,你的数据就像a15,a16,a17。你也可以用简单的in条款来达到你的要求。