我的表看起来像这样:
select distinct mock_data.employeeid,
mock_data.salary
from MOCK_DATA
where mock_data.gender like 'M%' and
replace(salary, '$','') salary > '3400';
我想要运行的查询是:
{{1}}
因为工资字段包含一个我不能使用关系运算符的字符,所以我首先使用replace来改变" $"到""
运行上述查询时得到的错误是: ORA-00920 ::无效的关系运算符
我的查询应该如何?
答案 0 :(得分:1)
您可以使用此查询。
select distinct employeeid,salary
from MOCK_DATA
where gender like 'M%'
and replace(salary, '$','') > '3400'
答案 1 :(得分:0)
您的数据和查询非常糟糕,您应将其丢弃并重新开始。
首先,不要每次都尝试将数字作为字符串进行比较。想想如果有人碰巧有10,000的工资会发生什么。
您的查询应使用以下内容:
施放(替换(工资,' $','')为十进制(10,2))> 3400
那就是说,你的问题仍然存在。
一个小小的手腕问题是你把所有东西都存储为varchar(50)。是真的如此,还是" 50"只是第一个突然出现的数字?
可判处死刑的罪行是您将数字存储为字符串。修复您的列数据类型,摆脱' $',您的生活将变得更加轻松。