我从其他数据库中存在的表中为数据库生成插入/更新脚本。所以,我使用连接||
来创建脚本。但就连接列不是数字数据类型而言,这很好。我这样做
当我使用
时select 'column_x'|| case community_id when null then null else community_id end || 'column_z' from tab;
结果是 column_xcolumn_z 。但我希望null在结果中打印为null。所以,为此,我使用如下
select 'column_x'|| case community_id when null then 'null' else community_id end || 'column_z' from tab;
然后我收到ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
错误。如何以 column_xnullcolumn_z 获得结果?有小费吗?任何内置的函数来处理?
答案 0 :(得分:2)
由于community_id
是一个数字,您需要使用to_char
函数或CAST
函数
CASE community_id
WHEN NULL
THEN 'null'
ELSE to_char( community_id )
END
将有效,因为CASE
语句的两个分支都返回相同类型的数据。当查询的一个分支返回一个数据类型(字符串)而另一个分支返回一个数字时,您会收到错误,因为Oracle不知道它是否需要进行隐式转换。