|
前两天在写视图的时候,用到了UNION ALL 发现了一个不注意的事情,除了我知道的需要列一样,如果union all的两条查询语句的列对应的数据类型不一样也不能通过会报:ORA-12704: 字符集不匹配这个错误;我们必须要使用cast 转换成相同的数据类型才行,具体方式请开如下代码: SELECT PROJ2.PROJECT_CODE XMBM,PROJ1.PROJECT_CODE DTGCBH,'' WJLX, CAST (BS.BIAOD_ID BDBM as varchar2(20)), FILE_.FILE_NAME WJMC,FILE_.FILE_PATH WJDZ,USER_.USER_NAME BZR, ORG.ORGANIZATION_NAME BZRDW, FILE_.CREATE_TIME SZSJ FROM T_JZL_GONGCJGYSSQ BSINNER JOINT_BNS_PRJM_PROJECT PROJ1ON BS.GONGC_ID = PROJ1.IDINNER JOINT_BNS_PRJM_PROJECT PROJ2ON PROJ1.SUPER_PROJECTID = PROJ2.IDLEFT JOINT_CTL_FILES FILE_ON FILE_.GROUPID = BS.GROUPIDLEFT JOINT_PDC_USER USER_ON USER_.ID = BS.BAOS_SENDERLEFT JOINT_PDC_ORGANIZATION ORGON ORG.ID IN(SELECT ORGANIZATION_IDFROM T_PDC_ORGANIZATION_USERWHERE USER_ID = BS.BAOS_SENDER AND DELETE_FLAG = '0')WHERE BS.DELETE_FLAG = '0'AND PROJ1.DELETE_FLAG = '0'AND PROJ2.DELETE_FLAG = '0'UNION ALLSELECT PROJ2.PROJECT_CODE XMBM,PROJ1.PROJECT_CODE DTGCBH,'02' WJLX,CAST ('' as varchar2(20)) BDBM,FILE_.FILE_NAME WJMC,FILE_.FILE_PATH WJDZ,USER_.USER_NAME BZR, ORG.ORGANIZATION_NAME BZRDW, FILE_.CREATE_TIME SZSJ FROM T_YXM_JINGYSSQ SQINNER JOINT_BNS_PRJM_PROJECT PROJ1ON SQ.GONGC_ID = PROJ1.IDINNER JOINT_BNS_PRJM_PROJECT PROJ2ON PROJ1.SUPER_PROJECTID = PROJ2.IDLEFT JOINT_CTL_FILES FILE_ON FILE_.GROUPID = SQ.GROUPIDLEFT JOINT_PDC_USER USER_ON USER_.ID = SQ.SIGLE_NAMELEFT JOINT_PDC_ORGANIZATION ORGON ORG.ID IN(SELECT ORGANIZATION_IDFROM T_PDC_ORGANIZATION_USERWHERE USER_ID = SQ.SIGLE_NAME AND DELETE_FLAG = '0')WHERE SQ.DELETE_FLAG = '0'AND PROJ1.DELETE_FLAG = '0'AND PROJ2.DELETE_FLAG = '0' |
|
|