选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

TRY_CAST 函数

聚焦模式
TRY_CAST 函数 - Amazon Redshift

与 CAST 函数相比,TRY_CAST 首先尝试将表达式强制转换为指定的类型。如果强制转换由于转换错误而失败,该操作将返回 null。如果未显式允许强制转换,该操作会返回错误。您可以在下面的使用说明中找到可能的转换列表。例如,不允许尝试将布尔值转换为时间戳。

语法

TRY_CAST(expression AS type)

参数

expression

计算结果为一个或多个值的表达式,如列名称或文本。转换 null 值将返回 null。表达式不能包含空白或空字符串。

type

受支持的数据类型之一。有关数据类型的完全列表,请参阅数据类型。有关受支持的源数据类型和目标数据类型对的列表,请参阅下面的使用说明。

返回类型

TRY_CAST 返回由 type 参数指定的数据类型的值。如果转换失败,该操作将返回 null。

使用说明

以下是 Amazon Redshift 针对 TRY_CAST 支持的源数据类型和目标数据类型对的列表。

BOOL

SMALLINT、INT、BIGINT、SUPER

SMALLINT

BOOL、INT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER

INT

BOOL、SMALLINT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER

BIGINT

BOOL、SMALLINT、INT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER

DECIMAL

SMALLINT、INT、BIGINT、REAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER

REAL

SMALLINT、INT、BIGINT、DECIMAL、FLOAT、BPCHAR、TEXT、VARCHAR、SUPER

FLOAT

SMALLINT、INT、BIGINT、DECIMAL、REAL、BPCHAR、TEXT、VARCHAR、SUPER

BPCHAR

SMALLINT、INT、BIGINT、DECIMAL、REAL、FLOAT、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIME、TIMETZ、SUPER

TEXT

SMALLINT、INT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIME、TIMETZ、SUPER

VARCHAR

SMALLINT、INT、BIGINT、DECIMAL、REAL、FLOAT、BPCHAR、TEXT、TIMESTAMP、TIMESTAMPTZ、DATE、TIME、TIMETZ、SUPER

TIMESTAMP

BPCHAR、TEXT、VARCHAR、TIMESTAMPTZ、DATE、TIME

TIMESTAMPTZ

BPCHAR、TEXT、VARCHAR、TIMESTAMP、DATE、TIME、TIMETZ

DATE

BPCHAR、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ

TIME

BPCHAR、TEXT、VARCHAR

TIMETZ

BPCHAR、TEXT、VARCHAR

SUPER

SUPER 可以转换为任何其它数据类型,但 DATE、TIME、TIMETZ、TIMESTAMP 和 TIMESTAMPTZ 除外。

示例

以下示例将 STRING 强制转换为 INTEGER。

SELECT TRY_CAST('123' AS INT); int ---- 123

以下示例返回 null。允许将 STRING 转换为 INTEGER,因此 TRY_CAST 不会返回错误,但是“foo”不是整数,因此该函数返回 null。

SELECT TRY_CAST('foo' AS INT)

以下示例返回错误,因为不允许将 BOOLEAN 转换为 TIMESTAMP。

SELECT TRY_CAST(true as timestamp);

由于 TRY_CAST 返回 null,而不是在转换失败时立即返回错误,因此您可以使用 TRY_CAST 筛选掉无效数据。请考虑以下示例,其中由于 Akua Mansa 的 age 列中存在转换失败,因此筛选掉了无效行。

CREATE TABLE IF NOT EXISTS student_data( name VARCHAR(100) NOT NULL, age VARCHAR(3) NOT NULL, enrollment_date DATE NOT NULL); INSERT INTO student_data (name, age, enrollment_date) VALUES ('Alejandro Rosalez', '10', '01/01/2000'), ('Akua Mansa', 'Ten', '01/01/2000'); SELECT * FROM student_data WHERE TRY_CAST(age AS INT) IS NOT NULL; --Akua is not returned. name | age | enrollment_date -------------------+-----+----------------- Alejandro Rosalez | 10 | 01/01/2000

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。