强制转型表达式
使用 CAST 和 AS 关键字或双冒号强制转型运算符( :: )来将表达式强制转型为另一数据类型。运算符和这些关键字都调用从表达式的数据类型到指定的目标数据类型的强制转型。
语法图解
语法格式
CAST ( expression [ :: target_data_type {:: target_data_type}] AS target_data_type )
expression :: target_data_type {:: target_data_type}
对目标数据类型的规则
- 目标数据类型必须为内建的、用户定义的数据类型,或数据库中的命名的 row 类型。
- 目标数据类型不可为未命名的 row 类型或集合类型。
- 在下列情况下,目标数据类型可为 BLOB 数据类型:
- 源表达式(要被强制转型到另一数据类型的表达式)为 BYTE 数据类型。
- 源表达式是用户定义的类型,且用户已定义了从用户定义的类型到 BLOB 类型的强制转型。
- 在这些条件下,目标数据类型可为 CLOB 类型:
- 源表达式是 TEXT 数据类型。
- 源表达式是用户定义的类型,且用户已定义了从用户定义的类型到 CLOB 类型的强制转型。
- 不可将 BLOB 数据类型强制转型为 BYTE 数据类型。
- 不可将 CLOB 数据类型强制转型为 TEXT 数据类型。
- 必须存在可将源表达式的数据类型转换为目标数据类型的显式的或隐式的强制转型。
示例
用户将 BYTE 列强制转型为 BLOB 类型,并将 BLOB 数据复制到操作系统文件:
SELECT LOTOFILE(mybytecol::blob, 'fname', 'client') FROM mytab WHERE pkey = 12345;