搜索快捷键 cmd + k | ctrl + k
- 安装
- 文档
- 入门
- 连接
- 数据导入
- 客户端 API
- 概览
- ADBC
- C
- C++
- CLI
- Dart
- Go
- Java (JDBC)
- Julia
- Node.js (已弃用)
- Node.js (Neo)
- ODBC
- PHP
- Python
- R
- Rust
- Swift
- Wasm
- SQL
- 介绍
- 语句
- 概览
- ANALYZE
- ALTER TABLE
- ALTER VIEW
- ATTACH 和 DETACH
- CALL
- CHECKPOINT
- COMMENT ON
- COPY
- CREATE INDEX
- CREATE MACRO
- CREATE SCHEMA
- CREATE SECRET
- CREATE SEQUENCE
- CREATE TABLE
- CREATE VIEW
- CREATE TYPE
- DELETE
- DESCRIBE
- DROP
- EXPORT 和 IMPORT DATABASE
- INSERT
- LOAD / INSTALL
- PIVOT
- 性能分析
- SELECT
- SET / RESET
- SET VARIABLE
- SUMMARIZE
- 事务管理
- UNPIVOT
- UPDATE
- USE
- VACUUM
- 查询语法
- SELECT
- FROM 和 JOIN
- WHERE
- GROUP BY
- GROUPING SETS
- HAVING
- ORDER BY
- LIMIT 和 OFFSET
- SAMPLE
- 展开嵌套
- WITH
- WINDOW
- QUALIFY
- VALUES
- FILTER
- 集合操作
- 预处理语句
- 数据类型
- 表达式
- 函数
- 概览
- 聚合函数
- 数组函数
- 位字符串函数
- Blob 函数
- 日期格式化函数
- 日期函数
- 日期部分函数
- 枚举函数
- 间隔函数
- Lambda 函数
- 列表函数
- 映射函数
- 嵌套函数
- 数值函数
- 模式匹配
- 正则表达式
- 结构体函数
- 文本函数
- 时间函数
- 时间戳函数
- 带时区时间戳函数
- 联合函数
- 实用函数
- 窗口函数
- 约束
- 索引
- 元查询
- DuckDB 的 SQL 方言
- 示例
- 配置
- 扩展
- 核心扩展
- 概览
- 自动补全
- Avro
- AWS
- Azure
- Delta
- DuckLake
- 编码
- Excel
- 全文搜索
- httpfs (HTTP 和 S3)
- Iceberg
- ICU
- inet
- jemalloc
- MySQL
- PostgreSQL
- 空间
- SQLite
- TPC-DS
- TPC-H
- UI
- VSS
- 指南
- 概览
- 数据查看器
- 数据库集成
- 文件格式
- 概览
- CSV 导入
- CSV 导出
- 直接读取文件
- Excel 导入
- Excel 导出
- JSON 导入
- JSON 导出
- Parquet 导入
- Parquet 导出
- 查询 Parquet 文件
- 使用 file: 协议访问文件
- 网络和云存储
- 概览
- HTTP Parquet 导入
- S3 Parquet 导入
- S3 Parquet 导出
- S3 Iceberg 导入
- S3 Express One
- GCS 导入
- Cloudflare R2 导入
- 通过 HTTPS / S3 使用 DuckDB
- Fastly 对象存储导入
- 元查询
- ODBC
- 性能
- Python
- 安装
- 执行 SQL
- Jupyter Notebooks
- marimo Notebooks
- Pandas 上的 SQL
- 从 Pandas 导入
- 导出到 Pandas
- 从 Numpy 导入
- 导出到 Numpy
- Arrow 上的 SQL
- 从 Arrow 导入
- 导出到 Arrow
- Pandas 上的关系型 API
- 多个 Python 线程
- 与 Ibis 集成
- 与 Polars 集成
- 使用 fsspec 文件系统
- SQL 编辑器
- SQL 功能
- 代码片段
- 故障排除
- 术语表
- 离线浏览
- 操作手册
- 开发
- 内部结构
- 为什么选择 DuckDB
- 行为准则
- 发布日历
- 路线图
- 站点地图
- 在线演示
文档 / SQL / 数据类型
NULL 值
NULL
值是用于表示 SQL 中缺失数据的特殊值。任何类型的列都可以包含 NULL
值。逻辑上,NULL
值可以视为“此字段的值未知”。
NULL
值可以插入到任何没有 NOT NULL
限定符的字段中。
CREATE TABLE integers (i INTEGER);
INSERT INTO integers VALUES (NULL);
NULL
值在查询的许多部分以及许多函数中具有特殊的语义。
任何与
NULL
值的比较都会返回NULL
,包括NULL = NULL
。
您可以使用 IS NOT DISTINCT FROM
来执行等值比较,其中 NULL
值彼此相等。使用 IS (NOT) NULL
来检查值是否为 NULL
。
SELECT NULL = NULL;
NULL
SELECT NULL IS NOT DISTINCT FROM NULL;
true
SELECT NULL IS NULL;
true
NULL 与函数
输入参数为 NULL
的函数**通常**返回 NULL
。
SELECT cos(NULL);
NULL
coalesce
函数是一个例外:它接受任意数量的参数,并为每一行返回第一个非 NULL
的参数。如果所有参数都为 NULL
,coalesce
也返回 NULL
。
SELECT coalesce(NULL, NULL, 1);
1
SELECT coalesce(10, 20);
10
SELECT coalesce(NULL, NULL);
NULL
ifnull
函数是 coalesce
的双参数版本。
SELECT ifnull(NULL, 'default_string');
default_string
SELECT ifnull(1, 'default_string');
1
NULL
与 AND
/ OR
NULL
值与 AND
和 OR
一起使用时具有特殊行为。有关详细信息,请参阅布尔类型文档。
NULL
与 IN
/ NOT IN
... IN ⟨包含 NULL 的内容⟩
的行为与 ... IN ⟨不含 NULL 的内容⟩
的行为不同。有关详细信息,请参阅 IN
文档。
NULL
与聚合函数
在大多数聚合函数中,NULL
值会被忽略。
不忽略 NULL
值的聚合函数包括:first
、last
、list
和 array_agg
。要从这些聚合函数中排除 NULL
值,可以使用 FILTER
子句。
CREATE TABLE integers (i INTEGER);
INSERT INTO integers VALUES (1), (10), (NULL);
SELECT min(i) FROM integers;
1
SELECT max(i) FROM integers;
10