Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ SQL\T-SQL ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


T-SQL: удаление одинаковых вхождений \ значений \ кусков в строке


Задача: удалить одинаковые куски из строки и вернуть ее с уникальными вхождениями:

--Переменные для работы цикла

DECLARE @expr varchar(100) = '5626 5996 5997 5906 5906 395678 395679 395678 56 906 444 395679'
DECLARE @temp_str varchar(100)
DECLARE @str VARCHAR(100) = ' '
DECLARE @l smallint = LEN(@expr)
DECLARE @pos smallint

​--Цикл

WHILE @l != 0
BEGIN
    SET @pos = (SELECT CHARINDEX(' ',@expr))

    IF @pos != 0
    BEGIN
        SET @temp_str = ' ' + SUBSTRING(@expr, 1, @pos - 1) + ' '

        IF (SELECT CHARINDEX(@temp_str, @str)) = 0
        BEGIN
            SET @str += @temp_str
        END

        SET @expr = SUBSTRING(@expr, @pos + 1, @l)
        SET @l = LEN(@expr)
    END
    ELSE
    BEGIN
        SET @temp_str = SUBSTRING(@expr, 1, @l)
        SET @l = 0
        IF (SELECT CHARINDEX(@temp_str, @str)) = 0
        BEGIN
            SET @str += @temp_str
        END
    END
END

select @str


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект