<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    PostgreSQL數據庫切割和組合字段函數

    一.組合函數
    1.concat
    a.介紹
    concat(str "any" [, str "any" [, ...]])
    
    Concatenate all but first arguments with separators.
    The first parameter is used as a separator. 
    NULL arguments are ignored.
    b.實際例子:
    postgres=# create table t_kenyon(id int,name varchar(10),remark text);
    CREATE TABLE
    postgres=# insert into t_kenyon values(1,'test','kenyon'),(2,'just','china'),(3,'iam','lovingU');
    INSERT 0 3
    postgres=# insert into t_kenyon values(4,'test',null);
    INSERT 0 1
    postgres=# insert into t_kenyon values(5,null,'adele');
    INSERT 0 1
    postgres=# select * from t_kenyon;
     id | name | remark  
    ----+------+---------
      1 | test | kenyon
      2 | just | china
      3 | iam  | lovingU
      4 | test | 
      5 |      | adele
    (5 rows)
    
    postgres=# select concat(id,name,remark) from t_kenyon;
       concat    
    -------------
     1testkenyon
     2justchina
     3iamlovingU
     4test
     5adele
    (5 rows)
    c.說明 concat函數純粹是一個拼接函數,可以忽略null值拼接,拼接的值沒有分隔符,如果需要分割符,則需要用下面的函數concat_ws。

    2.concat_ws
    a.介紹
    concat_ws(sep text, str "any" [, str "any" [,...] ])
    
    Concatenate all but first arguments with separators.
    The first parameter is used as a separator.
    NULL arguments are ignored.
    b.實際應用
    postgres=# select concat_ws(',',id,name,remark) from t_kenyon;
       concat_ws   
    ---------------
     1,test,kenyon
     2,just,china
     3,iam,lovingU
     4,test
     5,adele
    (5 rows)
    
    postgres=# select concat_ws('_',id,name,remark) from t_kenyon;
       concat_ws   
    ---------------
     1_test_kenyon
     2_just_china
     3_iam_lovingU
     4_test
     5_adele
    (5 rows)
    
    postgres=# select concat_ws('',id,name,remark) from t_kenyon;
      concat_ws  
    -------------
     1testkenyon
     2justchina
     3iamlovingU
     4test
     5adele
    (5 rows)
    
    postgres=# select concat_ws('^_*',id,name,remark) from t_kenyon;
         concat_ws     
    -------------------
     1^_*test^_*kenyon
     2^_*just^_*china
     3^_*iam^_*lovingU
     4^_*test
     5^_*adele
    (5 rows)
    c.說明 concat_ws函數比concat函數多了分隔符的功能,其實就是concat的升級版,假如分隔符為'',則取出來的結果和concat是一樣的。其功能與mysql中的group_concat函數比較類似,但也有不同,pg中concat_ws分隔符還支持多個字符作為分隔符的,日常用得更多的可能是||。 

    二、切割函數
    1.split_part
    a.介紹
    split_part(string text, delimiter text, field int)
    
    Split string on delimiter and return the given field (counting from one)
    b.實際例子
    postgres=# select split_part('abc~@~def~@~ghi','~@~', 2);
     split_part 
    ------------
     def
    (1 row)
    
    postgres=# select split_part('now|year|month','|',3);
     split_part 
    ------------
     month
    (1 row)
    c.說明 該函數對按分隔符去取某個特定位置上的值非常有效果

    2.regexp_split_to_table
    a.介紹
    regexp_split_to_table(string text, pattern text [, flags text])
    
    Split string using a POSIX regular expression as the delimiter.
    b.使用例子
    postgres=# SELECT regexp_split_to_table('kenyon,love,,china,!',',');
     regexp_split_to_table 
    -----------------------
     kenyon
     love
     
     china
     !
    (5 rows)
    
    --按分割符切割
    postgres=# SELECT regexp_split_to_table('kenyon,china,loves',',');
     regexp_split_to_table 
    -----------------------
     kenyon
     china
     loves
    (3 rows)
    
    --按字母切割
    postgres=# SELECT regexp_split_to_table('kenyon,,china',E'\\s*');
     regexp_split_to_table 
    -----------------------
     k
     e
     n
     y
     o
     n
     ,
     ,
     c
     h
     i
     n
     a
    (13 rows)
    3.regexp_split_to_array
    a.介紹
    regexp_split_to_array(string text, pattern text [, flags text ])
    
    Split string using a POSIX regular expression as the delimiter.
    b.實際例子
    postgres=# SELECT regexp_split_to_array('kenyon,love,,china,!',',');
      regexp_split_to_array   
    --------------------------
     {kenyon,love,"",china,!}
    (1 row)
    
    postgres=# SELECT regexp_split_to_array('kenyon,love,,china!','s*');
                 regexp_split_to_array             
    -----------------------------------------------
     {k,e,n,y,o,n,",",l,o,v,e,",",",",c,h,i,n,a,!}
    (1 row)
    c.說明
    上面用到的flag里的s*表示split all

    posted on 2013-05-15 10:24 Mr.lu 閱讀(461) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2013年5月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲情侣偷拍精品| 在线观看国产情趣免费视频| 国产午夜亚洲不卡| 特a级免费高清黄色片 | 亚洲制服丝袜第一页| 2019中文字幕在线电影免费| 亚洲av无码成人黄网站在线观看| 13小箩利洗澡无码视频网站免费| 亚洲爆乳无码专区| 一级成人a毛片免费播放| 日木av无码专区亚洲av毛片| 亚洲大片免费观看| 亚洲一级大黄大色毛片| 妞干网免费观看视频| 亚洲精品V天堂中文字幕| 免费a级毛片视频| 一区二区视频在线免费观看| 亚洲色自偷自拍另类小说| 久久精品电影免费动漫| 亚洲中文字幕久在线| 国产91久久久久久久免费| 国产免费AV片在线观看播放| 久久精品国产亚洲| 国产成人午夜精品免费视频| 欧洲亚洲国产精华液| 久久亚洲高清综合| 91视频免费网址| 亚洲av午夜国产精品无码中文字| 亚洲成A∨人片天堂网无码| 国产一级片免费看| 日韩亚洲国产高清免费视频| 亚洲AⅤ视频一区二区三区| 国产成人免费视频| 亚洲国产AV无码一区二区三区| 国产福利电影一区二区三区,亚洲国模精品一区 | 2020亚洲男人天堂精品| 精品久久久久久久免费人妻| 国产久爱免费精品视频| 亚洲一区二区三区在线网站 | 亚洲精品一品区二品区三品区| 1000部免费啪啪十八未年禁止观看|