麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Oracle > 正文

Oracle中實現MySQL show index from table命令SQL腳本分享

2024-08-29 13:58:19
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Oracle中實現MySQL show index from table命令SQL腳本分享,本文只是模擬了Mysql中的show index from table命令,需要的朋友可以參考下
 
 

實驗數據初始化:

 

復制代碼代碼如下:

create table t as select * from hr.employees;
create index inx_t1 on t(employee_id,first_name desc,last_name);
create index inx_t2 on t(job_id,hire_date);

 

顯示該表所有索引的信息。

以dba登錄

 

復制代碼代碼如下:

set linesize 300;
set pagesize 100;
col c1 format a20;
col c2 format a20;
col c3 format a20;
col c4 format a20;
col c5 format a20;
col INDEX_NAME format a20;
select INDEX_NAME,
max(decode(COLUMN_POSITION,1,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c1,
max(decode(COLUMN_POSITION,2,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c2,
max(decode(COLUMN_POSITION,3,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c3,
max(decode(COLUMN_POSITION,4,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c4,
max(decode(COLUMN_POSITION,5,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c5
from (
select INDEX_NAME,COLUMN_NAME,COLUMN_LENGTH,COLUMN_POSITION,DESCEND
from dba_ind_columns 
where table_owner='LIHUILIN' 
AND table_name='T' 
order by INDEX_NAME,column_position
) group by INDEX_NAME;

 

以普通用戶登錄

 

復制代碼代碼如下:

set linesize 300;
set pagesize 100;
col c1 format a20;
col c2 format a20;
col c3 format a20;
col c4 format a20;
col c5 format a20;
col INDEX_NAME format a20;
select INDEX_NAME,
max(decode(COLUMN_POSITION,1,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c1,
max(decode(COLUMN_POSITION,2,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c2,
max(decode(COLUMN_POSITION,3,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c3,
max(decode(COLUMN_POSITION,4,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c4,
max(decode(COLUMN_POSITION,5,COLUMN_NAME||','||COLUMN_LENGTH||','||DESCEND,null)) c5
from (
select INDEX_NAME,COLUMN_NAME,COLUMN_LENGTH,COLUMN_POSITION,DESCEND
from user_ind_columns 
where table_name='T' 
order by INDEX_NAME,column_position
) group by INDEX_NAME;

 

Oracle中實現MySQL show index from table命令SQL腳本分享

但是可以看到,以倒序創建的索引字段,都是以SYS等命名。

Oracle把這種倒序創建的索引字段看成函數索引。

它的信息保存在user_ind_expressions視圖。

Oracle中實現MySQL show index from table命令SQL腳本分享

user_ind_expressions視圖的COLUMN_EXPRESSION字段類型是long型。

王工的版本可以解決這個問題

 

復制代碼代碼如下:

CREATE OR REPLACE FUNCTION long_2_varchar (
   p_index_name IN user_ind_expressions.index_name%TYPE,
   p_table_name IN user_ind_expressions.table_name%TYPE,
   p_COLUMN_POSITION IN user_ind_expressions.table_name%TYPE)
   RETURN VARCHAR2
AS
   l_COLUMN_EXPRESSION LONG;
BEGIN
   SELECT COLUMN_EXPRESSION
     INTO l_COLUMN_EXPRESSION
     FROM user_ind_expressions
    WHERE index_name = p_index_name
          AND table_name = p_table_name
          AND COLUMN_POSITION = p_COLUMN_POSITION;

 

   RETURN SUBSTR (l_COLUMN_EXPRESSION, 1, 4000);
END;
/


復制代碼代碼如下:

set linesize 300;
set pagesize 100;
col c1 format a20;
col c2 format a20;
col c3 format a20;
col c4 format a20;
col c5 format a20;
col INDEX_NAME format a20;
SELECT INDEX_NAME,
         MAX (DECODE (COLUMN_POSITION, 1, COLUMN_NAME || ' ' || DESCEND, NULL))
            c1,
         MAX (DECODE (COLUMN_POSITION, 2, COLUMN_NAME || ' ' || DESCEND, NULL))
            c2,
         MAX (DECODE (COLUMN_POSITION, 3, COLUMN_NAME || ' ' || DESCEND, NULL))
            c3,
         MAX (DECODE (COLUMN_POSITION, 4, COLUMN_NAME || ' ' || DESCEND, NULL))
            c4,
         MAX (DECODE (COLUMN_POSITION, 5, COLUMN_NAME || ' ' || DESCEND, NULL))
            c5
    FROM ( SELECT a.INDEX_NAME,
                   REPLACE (
                      DECODE (
                         descend,
                         'DESC', long_2_varchar (b.index_name,
                                                 b.table_NAME,
                                                 b.COLUMN_POSITION),
                         a.column_name),
                      '"',
                      '')
                      COLUMN_NAME,
                   a.COLUMN_LENGTH,
                   a.COLUMN_POSITION,
                   DESCEND
              FROM user_ind_columns a
                   LEFT JOIN
                   user_ind_expressions b
                      ON a.index_name = b.index_name
                         AND a.table_name = b.table_name
             WHERE a.table_name = 'T'
          ORDER BY INDEX_NAME, column_position)
GROUP BY INDEX_NAME;

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久青| 日韩视频―中文字幕 | 美国一级黄色毛片 | 视频国产一区二区 | 黄网免费看 | 国产色爱综合网 | 国产永久免费观看 | 国产视频在线观看免费 | 久久一本日日摸夜夜添 | 国产精品久久久久久久久久久久久久久 | 久久最新免费视频 | 曰批全过程120分钟免费69 | 视频国产一区二区 | 91精品国产日韩91久久久久久360 | 国产精品99久久久久久久女警 | 中文字幕在线观看成人 | 91丨九色丨国产在线观看 | 在线观看国产一区二区 | www日韩在线观看 | 欧美国产日韩在线观看成人 | 综合图区亚洲 | 最新亚洲国产 | 成人情欲视频在线看免费 | 国产免费人做人爱午夜视频 | 草逼一区| 久久网页| 午夜精品久久久久久久久久久久久蜜桃 | 亚洲午夜精选 | 欧美一级美国一级 | 91 视频网站| 午夜小电影 | 成人午夜视屏 | 午夜国产精品成人 | 成年免费在线视频 | 亚洲成人免费影视 | 在线无码 | 羞羞视频免费网站含羞草 | a视频在线看 | 国产日韩三区 | 成人辣文 | 牛牛a级毛片在线播放 |