Oracle CAST() 函数使用指南
Oracle CAST()
是一个内置函数,它将给定的参数从一种类型转换为另一种类型。此函数支持基本数据类型和集合类型。
Oracle CAST()
语法
这里是 Oracle CAST()
函数的语法:
CAST({ expr | MULTISET (subquery) } AS type_name
[ DEFAULT return_value ON CONVERSION ERROR ]
[, fmt [, 'nlsparam' ] ])
参数
expr
-
必需的。 它可以是内置数据类型、集合类型或
ANYDATA
类型的实例。此参数与MULTISET (subquery)
参数必须提供一个。 type_name
-
必需的。它必须是一个内置数据类型或集合类型的名称。
DEFAULT return_value ON CONVERSION ERROR
-
可选的。它允许您指定在转换发生错误时返回的值。
fmt
-
可选的。格式化字符串。
'nlsparam'
-
可选的。您可以使用这个
'NLS_DATE_LANGUAGE = language'
形式设置此参数,其中language
是语言名称。
返回值
Oracle CAST()
函数将给定的参数从一种类型转换为另一种类型并返回转换后的值。
CAST
不支持 LONG
、LONG RAW
类型。 CAST
不直接支持任何 LOB 数据类型。当使用 CAST
将 CLOB
值转换为字符数据类型或将 BLOB
值转换为 RAW
数据类型时,数据库会将 LOB 值隐式转换为字符或原始数据,然后显式地将结果值强制转换为目标数据类型。如果结果值大于目标类型,则数据库将返回一个错误。
当使用 CAST ... MULTISET
获取集合值时,传递给 CAST
函数的查询中的每个选择列表项都将转换为目标集合元素类型的相应属性类型。
Oracle CAST()
示例
这里有几个展示了 Oracle CAST()
函数用法的示例。
基本用法
下面的示例演示了如何将一个字符串日期转为 TIMESTAMP
类型:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SSXFF';
SELECT
CAST('2023-02-28' AS TIMESTAMP, 'YYYY-MM-DD') Result
FROM dual;
输出:
RESULT
________________________________
2023-02-28 00:00:00.000000000
国家
Oracle CAST()
函数允许您指定语言以按照指定的语言进行转换。
SELECT CAST(
'28-Feb-23' AS TIMESTAMP,
'DD-MON-YY',
'NLS_DATE_LANGUAGE = American'
) Result
FROM dual;
输出:
RESULT
________________________________
2023-02-28 00:00:00.000000000
在看一个使用简体中文语言的示例:
SELECT CAST(
'20-2月 -23' AS TIMESTAMP,
'DD-MON-YY',
'NLS_DATE_LANGUAGE = ''Simplified Chinese'''
) Result
FROM dual;
输出:
RESULT
__________________________________
20-2月 -23 12.00.00.000000000 上午
出错
Oracle CAST()
函数允许您使用 DEFAULT return_value ON CONVERSION ERROR
参数指定在转换值时发生错误时要返回的内容。
如果您直接运行以下语句, Oracle 或许或返回以下错误:
SELECT
CAST('2023-02-28' AS TIMESTAMP) Result
FROM dual;
输出:
SQL Error: ORA-01843: not a valid month
01843. 00000 - "not a valid month"
这是因为,这个格式可能跟您的会话语言不一致导致的。此时您可以指定一个默认值,如下:
SELECT
CAST('2023-02-28' AS TIMESTAMP DEFAULT '28-2月 -23' ON CONVERSION ERROR) Result
FROM dual;
输出:
RESULT
__________________________________
28-2月 -23 12.00.00.000000000 上午
请注意,默认值需要符合当前的环境设置或者通过 fmt
参数指定的格式。
结论
Oracle CAST()
是一个内置函数,它将给定的参数从一种类型转换为另一种类型。此函数支持基本数据类型和集合类型。