Oracle 创建视图View 报错“ORA-12704: character set mismatch” 使用union语句

原因:(''默认的是VARCHAR2,与NVARCHAR2不匹配)

表1有字段:LEGAL_PERSON    NVARCHAR2(32)

表2无此字段 union时用''代替

解决办法:

使用cast()将字符集转换为相同

--oc.legal_person,     -- 法人
cast(oc.legal_person as NVARCHAR2(32)) legal_person,  -- 法人

 

--'' legal_person,     -- 法人
cast('' as NVARCHAR2(32)) legal_person,  -- 法人

 

成功实例

--“组织管理”视图oms_company_department_v
create or replace view oms_company_department_v as
select
a.ORGANIZATION_ID,
a.ORGANIZATION_CODE,
a.ORGANIZATION_NAME,
a.ORGANIZATION_PARENT_ID,
a.ORGANIZATION_PARENT_NAME,
a.ORGANIZATION_TYPE,
a.ENABLED_FLAG,
a.legal_person,
a.customed,
a.parent_id_path,
a.parent_name_path,
a.depts_company,
(select count(1)from
(select oc.company_id organization_id,
oc.parent_id organization_parent_id -- 父ID
                  from oms_company oc
                 where oc.enabled_flag = 1
                union all
                select od.department_id organization_id, -- ID
                       od.parent_id organization_parent_id -- 父ID
                  from oms_department od
                 where od.enabled_flag = 1) b
         where a.organization_id = b.organization_parent_id) has_child
  from (select oc.company_id organization_id, -- ID
               oc.company_code organization_code, -- 编码
               oc.company_name organization_name, -- 名称
               oc.parent_id organization_parent_id, -- 父ID
               (select t.company_name from oms_company t where t.company_id=oc.parent_id) organization_parent_name, -- 父名称
               1 organization_type, -- 类型  1:代表单位  0 :代表部门
               --oc.legal_person,     -- 法人
               cast(oc.legal_person as NVARCHAR2(32)) legal_person,  -- 法人

               oc.enabled_flag,
               oc.customed,
               oc.parent_id_path,
               oc.parent_name_path,
               null depts_company
          from oms_company oc
         where oc.enabled_flag = 1
        union all
        select od.department_id organization_id, -- ID
               od.department_code organization_code, -- 编码
               od.department_name organization_name, -- 名称
               od.parent_id organization_parent_id, -- 父ID
               (select t.department_name from oms_department t where t.department_id=od.parent_id) organization_parent_name, -- 父名称或者其上级单位名称
               0 organization_type, -- 类型 1 :代表单位 0 :代表部门
               --'' legal_person,     -- 法人
               cast('' as NVARCHAR2(32)) legal_person,  -- 法人

               od.enabled_flag,
               od.customed,
               od.parent_id_path,
               od.parent_name_path,
               od.company_id depts_company
          from oms_department od
         where od.enabled_flag = 1) a;

 

参考文献:

https://blog.csdn.net/baidu_37107022/article/details/81259319

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值