2021-02-01存過遷移中的一點問題

原語句:

create table if not exists t_court_info_ls1 
as select court_eid
          ,regexp_substr(grid_id, '[^,]+', 1, level) grid_id
   from t_court_info_mid t
   connect by level <= regexp_count(grid_id, ',') + 1
   and court_eid = prior court_eid
   and prior dbms_random.value is not null;

點1:regexp_substr(grid_id, ''[^,]+'', 1, level)

說明:

REGEXP_SUBSTR函數(shù)用于為模式搜索字符串,其中模式由與POSIX兼容的正則表達式所指定。REGEXP_SUBSTR函數(shù)返回的字符串與在調(diào)用函數(shù)中所指定的模式匹配。

語法:

TEXT REGEXP_SUBSTR
( srcstr        TEXT, 
  pattern       TEXT, 
  position      INT  DEFAULT 1, 
  occurrence    INT  DEFAULT 1,
  modifier      TEXT DEFAULT NULL,
  subexpression INT  DEFAULT 0 )

參數(shù)

參數(shù)名稱 描述
srcstr srcstr指定要搜索的字符串。
Pattern pattern 用于指定REGEXP_SUBSTR 要搜索的正則表達式。
position position指定表明在源字符串中起始位置的整數(shù)值。缺省值為1。
occurrence 如果在搜索字符串時, 有一個以上的模式出現(xiàn),那么occurrence則用于指定返回的匹配信息。缺省值為1.
modifier modifier用于指定控制模式匹配行為的值。缺省值為NULL。
subexpression subexpression是一個整數(shù)值,用于識別由REGEXP_SUBSTR返回的pattern部分。subexpression的缺省值為0。如果我們給subexpression指定一個值,那么在pattern中必須包括一組(或多組)的括號,來孤立正在搜索的值的部分。由subexpression指定的值表明了應(yīng)被返回的括號組。例如,如果subexpression為2,那么REGEXP_SUBSTR將返回第二組括號的位置。
  • 下面的簡單示例中,REGEXP_SUBSTR搜索的字符串為第一組包含3個連續(xù)數(shù)字的電話號碼:
SELECT REGEXP_SUBSTR('800-555-****', '[0-9][0-9][0-9]', 1, 1) FROM DUAL;
--------------
 800
(1 row)        

點2:regexp_count(grid_id, '','') + 1

說明:

REGEXP_COUNT用于為正則表達式搜索字符串,且返回正則表達式發(fā)生的時間信息。

語法

INTEGER REGEXP_COUNT
( srcstr    TEXT,
  pattern   TEXT,
  position  DEFAULT 1
  modifier  DEFAULT NULL)

參數(shù)

參數(shù)名稱 描述
srcstr 指定要搜索的字符串
pattern 指定REGEXP_COUNT要搜索的正則表達式
position position是一個整數(shù)值,用于表明REGEXP_COUNT要在源字符串中開始搜索的位置。缺省值為1。
modifier modifier用于指定控制模式匹配行為的值。缺省值為NULL。

示例

在下列簡單示例中,REGEXP_COUNT返回的是在字符串'reinitializing'中字母i的使用次數(shù):

 SELECT REGEXP_COUNT('reinitializing', 'i', 1) FROM DUAL;
            5
(1 row)        

在第一個示例中,命令了REGEXP_COUNT開始在首位計數(shù)。如果我們要修改指令使其在第六位開始計數(shù),那么就可以:

SELECT REGEXP_COUNT('reinitializing', 'i', 6) FROM DUAL;
            3
(1 row)            

那么REGEXP_COUNT返回的就是3,且計數(shù)結(jié)果不包括任何出現(xiàn)在第六位之前的字母i。

點3:connect by

說明

connect by主要用在層級關(guān)系的查詢,可實現(xiàn)多種功能
1、列出上下級關(guān)系;
2、構(gòu)造序列;
3、實現(xiàn)排列組合;

語法

SELECT ... FROM
           [WHERE condition]                             --過濾某些節(jié)點
           [START WITH [nocycle] start_condition]    --定義查詢的起點, 可以使用子查詢
          CONNECT BY [[nocycle] PRIOR COLUMN1 = COLUMN2 [AND ...]];   --定義父子關(guān)系
          order [ sibilings ] by ...

hive中使用爆炸函數(shù) ---修改為:

create table if not exists t_court_info_ls1 as select
        court_eid ,
        mycol1 
    from
        t_court_info_mid t lateral view explode( split(grid_id, ',')) mytable1 as mycol1 ;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容