国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

將字符串中的重復字符剔除

2024-07-21 02:46:48
字體:
來源:轉載
供稿:網友
將字符串中的重復字符剔除

數據庫環境:SQL SERVER2008R2

在網上看到一網友提的需求,要求把字符串列中的重復字符剔除,只保留一個。我簡單的把需求描述下,

比如,有一個t表,A1列存字符串,存儲的內容如下:

A1

A,B,B,C

C,C,D

F,S,S

剔除重復字符后的結果如下:

A1

A,B,C

C,D

F,S

思路:每一行記錄生成一個行號,把字符串中的字符全部存到一列,根據行號和字符去重,然后再用FOR xml PATH合并到一行

/*數據準備*/WITH    x0          AS ( SELECT   1 AS id ,                        'A,B,B,C' AS A1               UNION ALL               SELECT   2 AS id ,                        'C,C,D' AS A1               UNION ALL               SELECT   3 AS id ,                        'F,S,S' AS A1             ),/*將所有字符轉存一列,去重*/        x2          AS ( SELECT  DISTINCT                        a.id ,                        SUBSTRING(a.A1, b.number,                                  CHARINDEX(',', a.A1 + ',', b.number)                                  - b.number) AS A1               FROM     x0 a ,                        master..spt_values b               WHERE    b.number >= 1                        AND b.number <= LEN(a.A1)                        AND b.type = 'P'                        AND SUBSTRING(',' + a.A1, b.number, 1) = ','             )     /*根據原先的行號,把行號相同的轉回到一行上*/    SELECT  LEFT(A1, LEN(A1) - 1) AS A1    FROM    ( SELECT    id ,                        ( SELECT    a.A1 + ','                          FROM      x2 a                          WHERE     a.id = b.id                        FOR                          XML PATH('')                        ) AS A1              FROM      x2 b              GROUP BY  id            ) t

SQL比較好理解,并加了一些注釋,這里不再重復。

(全文完)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎赉特旗| 莱阳市| 文成县| 安多县| 合水县| 岱山县| 北川| 南昌市| 娄底市| 大冶市| 五河县| 高邮市| 宝应县| 乳源| 定结县| 长葛市| 建宁县| 集贤县| 武邑县| 湄潭县| 称多县| 松江区| 唐海县| 信宜市| 龙胜| 洞头县| 蓝田县| 游戏| 乳山市| 桐城市| 平舆县| 定安县| 仲巴县| 九寨沟县| 文安县| 吴桥县| 博客| 兴海县| 宁都县| 漠河县| 桐梓县|