Sql ORA-00932-不一致的数据类型:应为长字符
Oracle版本-12.1.0.2Sql ORA-00932-不一致的数据类型:应为长字符,sql,oracle,Sql,Oracle,Oracle版本-12.1.0.2 Table name: PERSON_DATA PD_PERSON - FLOAT(126) PD_REMARK - LONG PD_DATE - DATE 我对应用程序代码调用的SQL查询有问题。该查询抛出错误ORA-00932-不一致的数据类型:应为LONG-get CHAR 查询如下: select nvl(PD_REMARK, '') from PERSON_DATA; 这与Oracle处理“”字符串的方式有关,就好像该字符串被更改为null
Table name: PERSON_DATA
PD_PERSON - FLOAT(126)
PD_REMARK - LONG
PD_DATE - DATE
我对应用程序代码调用的SQL查询有问题。该查询抛出错误ORA-00932-不一致的数据类型:应为LONG-get CHAR
查询如下:
select nvl(PD_REMARK, '') from PERSON_DATA;
这与Oracle处理“”字符串的方式有关,就好像该字符串被更改为
null
那么它就可以正常工作一样。另一件奇怪的事是,这段代码一直有效,直到几周前Oracle数据库从备用实例切换过来。这让我觉得是Oracle设置导致了这种情况,但我不知道是什么原因。这似乎适用于DBFIDLE:…@GordonLinoff-是的,它适用于我的其他数据库。正如我所说,在我们切换(ODG)到当前活动实例之前,它在另一个实例上运行良好。在Oracle中,空字符串('
)与NULL
值相同。使用NVL(pd_remark,”)
与NVL(pd_remark,NULL)
相同,后者与pd_remark
相同(并且根本不使用NVL
)@MT0谢谢,我也这么认为,但是,如果您将语句更改为从PERSON_数据中选择NVL(pd_remark,NULL)代码>然后它工作正常。必须有一些参数或某些东西影响空字符串在Oracle中的使用方式。