Mod*_*age 12 sql oracle plsql conditional-operator
如果您可以在查询中使用函数来检测空值,MySQL/MSSQL有一个整洁的小内联,如下所示.
SELECT
...
foo.a_field AS "a_field",
SELECT if(foo.bar is null, 0, foo.bar) AS "bar",
foo.a_field AS "a_field",
...
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是这个代码在Oracle数据库上运行是不安全的,因为它似乎不支持这种内联语法.
Oracle中是否有相同的内容?
Dav*_*res 15
为了补充其余的答案,主要处理NULL值和COALESCE/NVL/NVL2:
SELECT *
FROM TheTable
WHERE field1 = CASE field2 WHEN 0 THEN 'abc' WHEN 1 THEN 'def' ELSE '' END
Run Code Online (Sandbox Code Playgroud)
CASE声明显然并不简洁,但它们都是为了灵活性.当您的条件不基于NULL时,这尤其有用.
Ton*_*ews 14
使用标准COALESCE功能:
SELECT COALESCE(foo.bar, 0) as "bar", ...
Run Code Online (Sandbox Code Playgroud)
或者使用Oracle自己的NVL功能.
OMG*_*ies 12
NVL(t.column, 0)
NVL2( string1, value_if_NOT_null, value_if_null )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32329 次 |
| 最近记录: |