⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Casting

类型转换指的是将特定数据类型中的值转换为另一种数据类型中的相应值的操作。 类型转换可以是隐式的或显式的。这里描述的语法执行显式转换。更多关于类型转换的信息可以在类型转换页面找到。

Explicit Casting

显式类型转换的标准SQL语法是CAST(expr AS TYPENAME),其中TYPENAMEDuckDB的数据类型之一(或别名)。DuckDB还支持简写形式expr::TYPENAME,这在PostgreSQL中也存在。

SELECT CAST(i AS VARCHAR) AS i FROM generate_series(1, 3) tbl(i);
i
1
2
3
SELECT i::DOUBLE AS i FROM generate_series(1, 3) tbl(i);
i
1.0
2.0
3.0

类型转换规则

并非所有的类型转换都是可能的。例如,不可能将INTEGER转换为DATE。当转换无法成功执行时,转换也可能抛出错误。例如,尝试将字符串'hello'转换为INTEGER将导致抛出错误。

SELECT CAST('hello' AS INTEGER);
Conversion Error: Could not convert string 'hello' to INT32

转换的确切行为取决于源类型和目标类型。例如,当从VARCHAR转换为任何其他类型时,将尝试转换字符串。

TRY_CAST

TRY_CAST 可以在首选行为不是抛出错误,而是返回 NULL 值时使用。TRY_CAST 永远不会抛出错误,如果无法进行转换,它将返回 NULL

SELECT TRY_CAST('hello' AS INTEGER) AS i;
i
NULL