Я знаю о решении CLR, но, как я уже сказал, я не отвечаю и не уполномочен применять его в рассматриваемой БД.
Для этой конкретной проблемы я решил написать очень простой и довольно глупый цикл. Я боюсь, что это не будет достаточно быстро для миллионов записей, но в любом случае ... Я хотел бы сделать это на уровне приложений, но я связан с T-SQL здесь ..
DECLARE @i int ; -- counter
DECLARE @input varchar(200) ;
SET @input = 'AAABCDEEFFBBBXYZSSSWWWNT'
IF LEN(@input) > 1
BEGIN
DECLARE @unduplicated varchar(200) ;
SET @unduplicated = SUBSTRING(@input,1,1) ;
SET @i = 2 ;
WHILE @i <= LEN(@input)
BEGIN
-- If current char is different from the last char, concatenate, else not
IF SUBSTRING(@unduplicated, LEN(@unduplicated), 1) <> SUBSTRING(@input, @i, 1)
SET @unduplicated = @unduplicated + SUBSTRING(@input, @i, 1) ;
SET @i = @i + 1;
END
END
SELECT @unduplicated AS unduplicated;
Результат:
unduplicated
ABCDEFBXYZSWNT