首页 > 解决方案 > 从sql server中的给定字符串中获取不同的字符

问题描述

我需要一个 T-SQL 函数来删除给定字符串中的重复字符

例如 Fn_Remove('AVGHAHA') 它将返回 AVGH

标签: sql-serverstringfunctiontsql

解决方案


使用NGrams8K,您可以将字符串拆分为单个字符“令牌”,将数字应用于该字符集,然后仅使用每个字符的第一个进行重建:

WITH CTE AS(
    SELECT V.S,
           N.position,
           N.token,
           ROW_NUMBER() OVER (PARTITION BY N.token ORDER BY N.position) AS RN
    FROM (VALUES('AVGHAHA'))V(S)
         CROSS APPLY dbo.NGrams8k(V.S,1) N)
SELECT V.S,
       (SELECT '' + C.token
        FROM CTE C
        WHERE C.S = V.S
          AND C.RN = 1
        ORDER BY C.position
        FOR XML PATH('')) AS Replaced
FROM (VALUES('AVGHAHA'))V(S);

推荐阅读