[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