当数据类型是sql中的数字时,在连接中处理null

时间:2013-04-25 20:01:24

标签: sql oracle

我从其他数据库中存在的表中为数据库生成插入/更新脚本。所以,我使用连接||来创建脚本。但就连接列不是数字数据类型而言,这很好。我这样做

当我使用

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 获得结果?有小费吗?任何内置的函数来处理?

1 个答案:

答案 0 :(得分:2)

由于community_id是一个数字,您需要使用to_char函数或CAST函数

将其明确地转换为字符串
CASE community_id
     WHEN NULL 
     THEN 'null'
     ELSE to_char( community_id )
 END

将有效,因为CASE语句的两个分支都返回相同类型的数据。当查询的一个分支返回一个数据类型(字符串)而另一个分支返回一个数字时,您会收到错误,因为Oracle不知道它是否需要进行隐式转换。