我通常使用PostgreSQL,但现在需要在Oracle中进行。
我需要在查询(select)中更改列的数据类型,在PostgreSQL中,我通常会这样做:
select 1::varchar from table
我该如何在Oracle中实现这个功能?
最好的问候,
转换为varchar类型
select to_char(Field) from table
截断 varchar
select substr(field, 1, 1) from table
正如@Michael Pakhantsov所指出的那样,to_char
用于将数据转换为字符串。同样,to_date
和to_timestamp
是将字符串分别转换为日期和时间戳的标准方法。但是,如果您发现需要执行更奇特的转换(例如varchar2转raw),那么cast
就是您的朋友:
数字转换为字符串:
select cast(field as varchar2(30)) from table;
字符串转换为原始格式:
select cast(field as raw(16)) from table;
和 @Allan 一样,我喜欢使用 cast()
,因为它可以转换多种类型。
然而,正如官方文档所说,
CAST 不支持 LONG、LONG RAW、任何 LOB 数据类型或 Oracle 提供的类型
因此,无法将其用于转换为 CLOB,例如,Oracle 将抛出
ORA-00932: 数据类型不一致:期望 - 得到 CLOB
to_char(column, 'yyyy-mm-dd')
),以避免在不同的NLS设置下产生意外的结果。 - user330315