【问题标题】:How to match user defined data type in SQL如何在 SQL 中匹配用户定义的数据类型
【发布时间】:2019-11-29 07:28:20
【问题描述】:

我有一个用户定义的数据类型CRM_IDS

create or replace TYPE CRM_IDS AS VARRAY(10) OF VARCHAR(32);

在我的表purecov_summary中,列NAV_CRM_ID的数据类型是CRM_IDS

CREATE TABLE "PE_REG"."PURECOV_SUMMARY"
(
    ...
    "NAV_CRM_ID" "PE_REG"."CRM_IDS" ,
    ...
)

当我选择第一行的 nav_crm_id 时:

select nav_crm_id 
from purecov_summary 
where rownum = 1

我可以得到"PE_REG.CRM_IDS('10035005')"

但是当我跑步时:

select * 
from purecov_summary 
where nav_crm_id = PE_REG.CRM_IDS('10035005')

我得到这个错误:

ORA-00932:不一致的数据类型:预期 - 得到 PE_REG.CRM_IDS
00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s”
*原因:
*行动:
行错误:1 列:37

如何使用PE_REG.CRM_IDS 类型进行选择?

【问题讨论】:

    标签: sql oracle varray


    【解决方案1】:

    诀窍是在table 关键字中使用嵌套的可变数组列(nav_crm_id)作为table(nav_crm_id)。所以考虑以下之一:

    select p.* 
      from purecov_summary p 
     where exists (select column_value from table(p.nav_crm_id) where column_value = '10035005') 
    

    select p.*
      from purecov_summary p
      join table(p.nav_crm_id) c
        on c.column_value = '10035005';
    

    Demo

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 2010-09-08
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多