文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> Oracle语法迁移> 模式对象> 索引

索引

分享
更新时间: 2019/08/09 GMT+08:00

DWS中创建索引期间,索引名不能与模式名一起指定。该索引将在创建索引表的模式中自动创建。

图1 输入:索引
图2 输出:索引

输入:使用CASE语句的基于函数的INDEX

基于函数的INDEX是在列顶部的函数或表达式的结果上创建的索引。

Function based INDEX is an index that is created on the results of a function or expression on top of a column.

输入

CREATE
     UNIQUE index GCC_RSRC_ASSIGN_U1
          ON GCC_PLAN.GCC_RSRC_ASSIGN_T (
          (CASE
               WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL )
               THEN WORK_ORDER_ID
               ELSE NULL
          END)
     ) ;
说明:

需要将表达式或函数放在()里。

输入:使用DECODE的基于函数的INDEX

基于函数的INDEX是在列顶部的函数或表达式的结果上创建的索引。

CREATE UNIQUE index GCC_PLAN_N2
          ON GCC_PLAN.GCC_PLAN_T (
          DECODE (
               ENABLE_FLAG
               ,'Y'
               ,BUSINESS_ID
               ,NULL
          )
     ) ;  

输出

CREATE UNIQUE index GCC_PLAN_N2
          ON GCC_PLAN.GCC_PLAN_T (
          (DECODE (
               ENABLE_FLAG
               ,'Y'
               ,BUSINESS_ID
               ,NULL
          ))
     ) ;  
说明:

需要将表达式或函数放在()里。

ORA_HASH

ORA_HASH函数用于计算给定表达式或列的哈希值。如果在create index的列上指定了此函数,则此函数将被删除。

输入:

create index SD_WO.WO_WORK_ORDER_T_N3 on SD_WO.WO_WORK_ORDER_T (PROJECT_NUMBER, ORA_HASH(WORK_ORDER_NAME));

输出:

CREATE
index WO_WORK_ORDER_T_N3
ON SD_WO.WO_WORK_ORDER_T (
PROJECT_NUMBER
,ORA_HASH( WORK_ORDER_NAME )
) ;

输入

  partition SYS_P111339
    tablespace SDWO_DATA,
  partition SYS_P111340
    tablespace SDWO_DATA
);
comment on table SD_WO.WO_WORK_ORDER_T
  is '¹¤µ¥¹ÜÀí£¬ÒµÎñÊý¾Ý£¬Ö÷±í';
comment on column SD_WO.WO_WORK_ORDER_T.WORK_ORDER_ID
  is '¹¤µ¥ID';

create index SD_WO.WO_WORK_ORDER_T_N3 on SD_WO.WO_WORK_ORDER_T (PROJECT_NUMBER, ORA_HASH(WORK_ORDER_NAME));

输出

CREATE
     index WO_WORK_ORDER_T_N3
          ON SD_WO.WO_WORK_ORDER_T (
          PROJECT_NUMBER
          , WORK_ORDER_NAME
     ) ;

解码

CREATE INDEX statement DECODE function used as a part of column i.e It's showing error - syntax error at or near 'DECODE ('

Script - gcc_plan_t.sql

输入:

create unique index GCC_PLAN.GCC_PLAN_N2 on GCC_PLAN.GCC_PLAN_T (DECODE(ENABLE_FLAG,'Y',BUSINESS_ID,NULL));

输出:

CREATE

UNIQUE index GCC_PLAN_N2

ON GCC_PLAN.GCC_PLAN_T (

DECODE (

ENABLE_FLAG

,'Y'

,BUSINESS_ID

,NULL

)

) ;

输入

Expected Output -                   CREATE
     UNIQUE index GCC_PLAN_N2
          ON GCC_PLAN.GCC_PLAN_T (
          (DECODE (
               ENABLE_FLAG
               ,'Y'
               ,BUSINESS_ID
               ,NULL
          ))
     ) ;  

输出

CREATE UNIQUE INDEX
      gcc_plan_n2 ON gcc_plan.gcc_plan_t 
                                    ( (( Decode (enable_flag, 'Y', business_id, NULL) )) );

CASE语句

索引创建中不支持CASE语句。

输入

CREATE
     UNIQUE index GCC_RSRC_ASSIGN_U1
          ON GCC_PLAN.GCC_RSRC_ASSIGN_T (
          (CASE
               WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL )
               THEN WORK_ORDER_ID
               ELSE NULL
          END)
     ) ;

输出

CREATE UNIQUE INDEX gcc_rsrc_assign_u1 
  ON gcc_plan.gcc_rsrc_assign_t ( (( CASE 
                                                        WHEN( enable_flag = 'Y' 
                                                                  AND assign_type = '13' 
                                                                  AND work_order_id IS NOT NULL ) 
                                                  THEN work_order_id 
                                                  ELSE NULL END )) ); 
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区