[SQL ] 字串去除重複值

作者: bernachom (Terry)   2016-02-06 01:13:52
資料庫名稱: MS 2008R2
資料庫版本:2008 R2
內容/問題描述:
請教一下,我有一個欄位的值,可能會是重複的
例如:
A欄位
AA;AA;CC
DD;FF;FF
我希望可以把重複的去除掉
變成
A欄位
AA;CC
DD;FF
想了好久,請教一下,有什麼好方式能夠處理的嗎
謝謝指導了
作者: cyr1216 (香吉士)   2016-02-06 22:56:00
想到的只有分段處理,把每一列值撈出來,依;分號拆陣列成再distinct掉
作者: bernachom (Terry)   2016-02-07 09:45:00
每一列值撈出來,這是要做子查詢嗎??
作者: cyr1216 (香吉士)   2016-02-07 22:24:00
我想到的可能要寫成預儲程序
作者: bv5gt (RogerChu)   2016-02-07 23:53:00
Aa,ccff...長度都一樣的會,應該可以用subatring
作者: bernachom (Terry)   2016-02-08 09:54:00
每個字串用分號隔開,字串長度可能會不一樣,唉,好麻煩
作者: Adonisy (堂本瓜一)   2016-02-08 15:05:00
寫自訂 .net函數吧...
作者: likesp999 (大腸桿菌)   2016-02-08 15:54:00
覺得這問題因該在前端就要避免,留到db來處理是蠻棘手的問題
作者: bv5gt (RogerChu)   2016-02-09 00:00:00
長度不一樣用substring就要配合charindex,慢慢拆解所有的;做法就跟1樓說的一樣拆完「;」,用Replace,將重復的取代掉,我想到的是這樣
作者: vi000246 (Vi)   2016-02-12 17:22:00
用正規表達式http://tinyurl.com/jbtbg8n關鍵字sql regex duplicate value([^;]+)(;[ ]*\1)*應該這樣才對/([^;]+;)([ ]*\1)*/g 最後一個分號再自己處理沒注意到重複三次的情況 /([^;]+;)([ ]*\1+)*/g想隔元素匹配的話參考這篇吧http://tinyurl.com/zaet6dr
作者: bernachom (Terry)   2016-02-12 20:01:00
正規表達式超複雜..

Links booklink

Contact Us: admin [ a t ] ucptt.com