最近在使用數據庫遷移適配,由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): 目前還沒有使用神通數據庫,不過也快了,使用了再更新。
以上為本次記錄,后期繼續更新。轉載請注明出處,感謝!如有不合理之處,請大家多多指教。
如果您覺得本文對您有幫助,歡迎點擊“收藏”按鈕!(/:微笑)歡迎轉載,轉載請注明出處。