我有两个VARCHAR2
列的表格:
trs_no trs_name
------ --------
JV1 ddd
. .
. .
. .
JV580 deee
我想选择JV280
和JV320
之间的所有trs_no
我尝试了正常但不起作用,因为我在结果中找到JV29
所以我也试着让JV280
和JV320
之间的长度在它起作用之间但是当长度不同时失败了。
我该如何解决这个问题?
答案 0 :(得分:2)
将trs_no
分成两个字符的字符串前缀和数字后缀并单独比较它们:
SELECT *
FROM your_table
WHERE SUBSTR( trs_no, 1, 2 ) = 'JV'
AND TO_NUMBER( SUBSTR( trs_no, 3 ) ) BETWEEN 280 AND 320
如果trs_no
可以有不同大小的字符串前缀,那么您可以使用正则表达式:
SELECT *
FROM your_table
WHERE REGEXP_SUBSTR( trs_no, '^(\D+)(\d+)$', 1, 1, NULL, 1 ) = 'JV'
AND TO_NUMBER( REGEXP_SUBSTR( trs_no, '^(\D+)(\d+)$', 1, 1, NULL, 2 ) )
BETWEEN 280 AND 320;