我有一个像这样的字符串 -
ABC;ABC;XYZ;PQR;ABC;PQR
并且要求将此转换为类似的东西 -
ABC;XYZ;PQR
意思是正则表达式应保留所有唯一单词并删除重复项。任何人都可以帮我这个。这可能在SQL中吗?
答案 0 :(得分:1)
从HP Vertica uses PCRE regex开始,以下正则表达式(使用null替换)应该起作用:
(?<=\;|^)(.+?)\;(?=(.+\;)?\1(\;|$))
请参阅demo。
下面简要说明:
(?<=\;|^)
是一个积极的lookbehind意思是(.+?)\;
要删除的前面应该是分号或字符串的开头(.+?)
是第一个捕获组(?=)
是一个积极的前瞻,包含:
(.+\;)?
任何其他字符(以分号结尾)\1
反向引用(\;|$)
必须以分号或EOL结尾答案 1 :(得分:-1)
使用T-Sql,你可以这样做:
DECLARE @Strings NVARCHAR(MAX);
SET @Strings = '';
SELECT @Strings = CASE WHEN @Strings != '' THEN @Strings + ';' + [String] ELSE [String] END
FROM (
SELECT DISTINCT VALUE AS [String] FROM STRING_SPLIT( 'ABC;ABC;XYZ;PQR;ABC;PQR',';')
) AS [Strings];
SELECT @Strings