sql查询解析varchar2文本以提取数字

时间:2015-08-25 20:07:01

标签: sql oracle

我是编写SQL查询的新手...请提示

I have a below oracle table 
col1          col2  col3
test1: 001    A1    A2
test1: 002    B1    B2
test1: 003    C1    C2
test1: 004    D1    D2
test1: 005    E1    E2

我想打印col1值为> = 002且< = 004的行,如下所示

col1          col2  col3
test1: 002    B1    B2
test1: 003    C1    C2
test1: 004    D1    D2

col1是varchar2(150字节)

如何为此编写查询?

2 个答案:

答案 0 :(得分:0)

您需要在col_1中获取字符串的正确数字,并查看它是否在2到4之间。

SELECT col1, col2, col3
FROM my_table
WHERE CAST(substr(col1,-1,1) AS INTEGER) BETWEEN 2 AND 4

答案 1 :(得分:0)

正则表达式将是您的朋友:

select t.*
  from tst t
  WHERE TO_NUMBER(REGEXP_SUBSTR(t.col1, '[0-9]{3}')) BETWEEN 2 and 4;

SQLFiddle here

祝你好运。