国产探花免费观看_亚洲丰满少妇自慰呻吟_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比較好理解,并加了一些注釋,這里不再重復。

(全文完)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌南县| 灵璧县| 邛崃市| 福海县| 桐柏县| 河源市| 柘荣县| 徐汇区| 日喀则市| 长治市| 嘉定区| 南川市| 镇宁| 巨野县| 连山| 昭平县| 深泽县| 彭州市| 宜兰市| 金溪县| 万源市| 砚山县| 英德市| 大悟县| 张家港市| 饶平县| 阜宁县| 连山| 厦门市| 满城县| 闽清县| 凤山县| 顺义区| 赫章县| 宣威市| 河北省| 衡阳县| 永胜县| 西峡县| 滁州市| 梅州市|