Sql 在varchar字段中搜索特定范围的数值

Sql 在varchar字段中搜索特定范围的数值,sql,oracle,Sql,Oracle,使用Oracle SQL Developer v3.2.20.09: 我有一个数据表,其中,在所有其他数据中,我有一列所有数值结果(例如,RESULT\u NUM),但由于它的存储和使用方式,是一个varchar2字段。我需要提取体温代码的所有记录(BT,TEMP,Temperature,在VT\u code字段中),其中result\u num>100(所有内容都是华氏温度,因此仅搜索结果即可) 因此,我的简单陈述是: Select * from VITALS where VT_CODE in

使用Oracle SQL Developer v3.2.20.09:

我有一个数据表,其中,在所有其他数据中,我有一列所有数值结果(例如,
RESULT\u NUM
),但由于它的存储和使用方式,是一个varchar2字段。我需要提取体温代码的所有记录(
BT
TEMP
Temperature
,在
VT\u code
字段中),其中
result\u num>100
(所有内容都是华氏温度,因此仅搜索结果即可)

因此,我的简单陈述是:

Select * from VITALS where VT_CODE in ('BT', 'TEMP', 'TEMPERATURE');
这让我恢复了所有体温记录,超过200万。现在我需要对其进行优化,以获得超过100个的结果

当我尝试添加“and
result\u num>100
”时,我得到一个错误,因为它是一个varchar字段,我试图用一个数字搜索

当我尝试添加“and
result\u num>'100'
”时,它执行时没有错误,因为它是一个字符值,但它返回大于1的所有值,而不是100的所有值,这显然是所有值

请帮助。

尝试以下操作

和convert(int,result_num)>100


和CAST(result_num as INTEGER)>100

第一次查询会出现什么错误?ORA-01722?这意味着该列中的数据实际上不是一个数字——这就是为什么不应该将其存储为字符串的原因。ORA-12801:并行查询服务器P017中发出错误信号ORA-01722:无效数字12801。00000-“并行查询服务器%s中发出错误信号”*原因:并行查询服务器达到异常条件*措施:检查以下错误消息以了解原因,并查阅错误手册以了解适当的措施*注释:此错误可以通过事件10397关闭,在这种情况下,服务器的实际错误将被通知。然后在
result\u num
列中有非数值;不一定在与您的
vt\u code
filter匹配的行中,这取决于Oracle评估事物的顺序。您可能首先需要弄清楚它们为什么存在,它们代表什么,以及是否需要修复它们。你可以跳过或容纳它们,但这取决于它们是什么。也许是因为它们有小数点?谢谢你的帮助。不,不是因为它们有小数点,除非你的NLS设置是错误的。显式
to_number()
cast()
可能会起作用,但只能通过更改求值顺序才能起作用,将来可能会再次中断。Convert选项给了我一个ORA-00904错误,表示INT是无效标识符。演员声明似乎奏效了。非常感谢。