我想比较两个数字.我们采取即1和2.
我试着写下面的查询,但它根本没有按预期工作(Toad说:ORA-00923:找不到FROM关键字):
SELECT 1 > 2 from dual
Run Code Online (Sandbox Code Playgroud)
DECODE类似于Switch案例,那么我怎样才能得到表达式评估的结果(即数字比较)将其放入选择列表?
我找到了一个使用函数而不是SELECT LIST中的表达式的解决方案:即
select DECODE(SIGN(actual - target)
, -1, 'NO Bonus for you'
, 0,'Just made it'
, 1, 'Congrats, you are a winner')
from some_table
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?
另外我如何比较两个日期?
sql中没有布尔类型(至少在oracle中).
你可以使用case:
SELECT CASE when 1 > 2 THEN 1 ELSE 0 END FROM dual
Run Code Online (Sandbox Code Playgroud)
但你的解决方案(解码)也很好,请阅读此处
该SIGN()函数确实可能(中),如果你想测试A> B,A = B和A <B,可能是你的兴趣平等分类的最佳途径,它将接受日期过期或数字-numeric作为参数.
我会优先使用Case语句,而不是解码.
Select
case sign(actual-target)
when -1 then ...
when 0 then ...
when 1 then ...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40493 次 |
| 最近记录: |