sql - nvl 函数未返回预期结果
问题描述
我知道该nvl
函数仅适用于“null”,而不适用于空字符串。我只是想知道是否有一个函数可以帮助我用另一个替换空白/空值。
我改为使用:
CASE WHEN expression_1 is null or expression_1 = '' then expression_2 else expression_1
expression_1 列有空单元格,而不是空单元格。
解决方案
NVL()
是最常与 Oracle 相关联的功能。等效的标准 SQL 函数是COALESCE()
.
默认情况下,Oracle 将NULL
字符串和空字符串 ( ''
) 视为相同。因此,'' IS NULL
评估为“真”(并且'' = ''
相当混乱地评估为,这在子句NULL
中为假)。WHERE
因此,您可以在空字符串上使用NVL()
或。COALESCE()
这些是相同的:
NVL(NULL, 'A')
NVL('', 'A')
COALESCE(NULL, 'A')
COALESCE('', 'A')
这是一个 db<>fiddle。
推荐阅读
- swift - FileHandler 输出的更多缓冲区?
- android - 如何解决 React Native Google 地图问题“错误:无法解析 ':react-native-maps@release/compileClasspath' 的依赖关系”?
- python-3.x - 如何在 coouture 请求之外发送 websocket 消息
- nginx - 为什么 nginx 在我的 Kubernetes Ingress 路由上返回 404?
- react-native - 如何使用 React Native 中的 Animated API 将命运之轮停在特定点?
- azure-devops - 当我尝试部署版本时 Azure DevOps Server 挂起 - 这是什么原因/补救措施?
- java - Spring Boot:如何根据当前环境或 spring 配置文件使用自定义 logback.xml
- node.js - 如何在 setTimeout 中调用异步函数
- node.js - 在 nodejs 中,如何先读取 CSV 标头但仍异步处理文件的其余部分
- java - 如何在数组中设置double类型的值