MySQL、DM 行轉列及字段去重(Group_Concat())


      最近在使用數據庫遷移適配,由MySQL 庫遷移到達夢數據庫,其中進行行轉列時,MySQL轉換達夢sql語法有些問題,特記錄。

      在MySQL 下有Group_Concat(expr)  ,在達夢及神通數據庫下如何轉換,有沒有同樣或者類似功能的函數呢?請看下面記錄。

      MySQL中 Group_Concat(expr)  函數支持 內部自定義連接分割符,使用時只需要 添加 SEPARATOR ';' 即可(表示使用 分號符 連接)。 默認 逗號 連接

      達夢數據庫(DM) 或着神通數據庫(oscar) 使用 WM_Concat(expr) ,默認 逗號(英文逗號) 連接,如果使用自定義連接符,需要使用 replace(str,exp1,exp2) 函數,示例:replace(name,',',';')  使用 分號符 替換原來的 逗號符。

 

 

  MySQL 中行轉列常用 函數:Group_Concat(expr):

    示例-表A :select name ,age,sex ,favorite from student      ---操作合並示例  favorite 字段  【favorite 字段值:1、籃球,2、足球,3、籃球,4、游泳】

    MYSQL: select Group_Concat(favorite) from student where name='zhangsan';       ----最終結果 favorite 中字段以【,】 連接 結果示例:籃球,足球,籃球,游泳

    去重:select Group_Concat(DISTINCT  facorite) from student where name='zhangsan';   ----最終結果 favorite 中字段以【,】 連接 結果示例:籃球,足球,游泳

    去重后以【;】連接:select Group_Concat(DISTINCT  facorite SEPARATOR ';')  from student where name='zhangsan'; ----最終結果 favorite 中字段以【;】 連接 結果示例:籃球;足球;游泳

 

  DM 中行轉列/與MYSQL中同樣作用 函數:WM_Concat(expr):

    示例(以MySQL中sql表示例):select name ,age,sex ,favorite from student      ---操作合並示例  favorite 字段  【favorite 字段值:1、籃球,2、足球,3、籃球,4、游泳】

    DM: select WM_Concat(favorite) from student where name='zhangsan';       ----最終結果 favorite 中字段以【,】 連接 結果示例:籃球,足球,籃球,游泳

    去重:select WM_Concat(DISTINCT  facorite) from student where name='zhangsan';   ----最終結果 favorite 中字段以【,】 連接 結果示例:籃球,足球,游泳

    去重后以【;】連接:select  replace(WM_Concat(DISTINCT  facorite)‘,’,‘,’  )from student where name='zhangsan'; ----最終結果 favorite 中字段以【;】 連接 結果示例:籃球;足球;游泳

 

  注:神通數據庫中行轉列/與MySQL 中合並字符串函數一致的 也可以使用 WM_Concat(expr):  目前還沒有使用神通數據庫,不過也快了,使用了再更新。

  

  以上為本次記錄,后期繼續更新。轉載請注明出處,感謝!如有不合理之處,請大家多多指教。

  如果您覺得本文對您有幫助,歡迎點擊收藏”按鈕!(/:微笑)歡迎轉載,轉載請注明出處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM