oracle union all 乱,关于ORACLE UNION ALL 遇到的问题

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 18:02   1916   0

前两天在写视图的时候,用到了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 BS

INNER JOIN

T_BNS_PRJM_PROJECT PROJ1

ON BS.GONGC_ID = PROJ1.ID

INNER JOIN

T_BNS_PRJM_PROJECT PROJ2

ON PROJ1.SUPER_PROJECTID = PROJ2.ID

LEFT JOIN

T_CTL_FILES FILE_

ON FILE_.GROUPID = BS.GROUPID

LEFT JOIN

T_PDC_USER USER_

ON USER_.ID = BS.BAOS_SENDER

LEFT JOIN

T_PDC_ORGANIZATION ORG

ON ORG.ID IN

(SELECT ORGANIZATION_ID

FROM T_PDC_ORGANIZATION_USER

WHERE 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 ALL

SELECT 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 SQ

INNER JOIN

T_BNS_PRJM_PROJECT PROJ1

ON SQ.GONGC_ID = PROJ1.ID

INNER JOIN

T_BNS_PRJM_PROJECT PROJ2

ON PROJ1.SUPER_PROJECTID = PROJ2.ID

LEFT JOIN

T_CTL_FILES FILE_

ON FILE_.GROUPID = SQ.GROUPID

LEFT JOIN

T_PDC_USER USER_

ON USER_.ID = SQ.SIGLE_NAME

LEFT JOIN

T_PDC_ORGANIZATION ORG

ON ORG.ID IN

(SELECT ORGANIZATION_ID

FROM T_PDC_ORGANIZATION_USER

WHERE USER_ID = SQ.SIGLE_NAME AND DELETE_FLAG = '0')

WHERE SQ.DELETE_FLAG = '0'

AND PROJ1.DELETE_FLAG = '0'

AND PROJ2.DELETE_FLAG = '0'

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP