【发布时间】:2018-12-06 09:56:54
【问题描述】:
我在解决任务时遇到了以下问题:
在 Oracle 数据库中,我有一个结构相当简单的表 ENTITY_INFO。它包含 3 列:
ENTITY_ID (VARCHAR2) - 数据库中实体的PK
NAME (VARCHAR2) - 信息名称,即“位置”、“成本”、“最后一次相遇”
VALUE (VARCHAR2) - 信息的值,即“assets/music”、“1500”、“1.1.2000”
目前,我需要过滤掉“成本”
一种天真的方法
SELECT ENTITY_ID FROM ENTITY_INFO WHERE NAME = 'cost' AND TO_NUMBER(VALUE)<1000
不起作用,因为列VALUE 包含不是数字的值。
但是与过滤器NAME = 'cost'匹配的所有列值都是数字,所以我需要做的情况是有效的。
我找到了Select string as number on Oracle 主题,但里面的信息证明对解决这个问题没有用处。
由于ENTITY_INFO 的性质和项目的状态,改变数据模型也不是可行的解决方案。
感谢任何提示。
【问题讨论】: