Объединить 1 со многими строками из таблицы, которые начинаются и заканчиваются с другим шаблоном в новое поле - PullRequest
0 голосов
/ 17 октября 2019

Я знаком и имею доступ к SQL Server Mgmt studio и Alteryx, но у меня не было необходимости использовать циклы. Поэтому я думаю, что мне, возможно, придется использовать его для строкового шаблона, который я собираюсь объединить в новый столбец. Может ли кто-нибудь помочь или предложить, если использование цикла имеет смысл и как лучше начать.

Ссылка ниже содержит пример данных, которые я ищу, чтобы проанализировать поле «исходный текст» и сделать его похожим на поле «новый текст», которое я сделал вручную и пытаюсь автоматизировать. Я думаю, что будет больше шаблонов, когда я пройдусь дальше, но решил, что начало лучше, чем ничего.

Поле данных с исходным текстом и новым текстом, которое я хочу создать после синтаксического анализа

Ниже приведен psuedocode, который я сделал до сих пор в том, что, как я думаю, может сработать ..

Пока конец файла

СЛУЧАЙ, КОГДА ОРИГИНАЛЬНЫЙ ТЕКСТ НАЧИНАЕТСЯ С ЛЮБОГО СЛЕДУЮЩЕГОРИСУНКИ НАЧИНАЮТ СОКРАЩАТЬСЯ И ЗАКОНЧАТЬСЯ ЛЮБОЙ ИЗ 5 РИСУНКОВ, НАЧАТЬ СНОВА И СОЗДАТЬ НОВУЮ ТЕКСТОВУЮ ЗАПИСЬ

(ШАБЛОН 1: | ### |

ШАБЛОН 2: ##:

ШАБЛОН 3: ## A:

ШАБЛОН 4 # /

ШАБЛОН 5 (#:

КОНЕЦ КАК НОВОЕ ПОЛЕ ТЕКСТА Обновление 10-21 - Я получил код нижеработа по поиску по двоеточию в качестве первого шага ..

if object_id('tempdb..#LETTERS') is not null

drop table #LETTERS
SELECT *
INTO #LETTERS
FROM [dbo].[tbl_TEXT_LETTERS]

declare @LINE_counter      int
declare @max_LINE_counter  int
set @LINE_counter = 0
select @max_LINE_counter = max(LINE) from #LETTERS

while @LINE_counter <= @max_LINE_counter

--

begin

    declare       @NEW_TEXT     varchar(200)


    select @NEW_TEXT =

    case when LETTERS.[TEXT] LIKE '%:%'

        THEN LETTERS.[TEXT]

        ELSE 'NOTHING'

    END

    FROM #LETTERS LETTERS
    where line = @LINE_counter

    --print @line_counter
    print @NEW_TEXT

    set @LINE_counter= @LINE_counter + 1

end

1 Ответ

0 голосов
/ 22 октября 2019

Поскольку вам нужно так много разных шаблонов, REGEX будет самым простым способом. Инструмент REGEX, установленный на Tokenise и разбитый на строки со следующим выражением, даст вам список всех терминов, на которые нужно разделить. Обратите внимание, что: 20F: не соответствует шаблону, который вы перечислили, и поэтому я импровизировал

\ | \ d {3} \ ||: \ d \ d [AZ] {0,1}: | \d / | (\ d:

Что это означает:Труба, за которой следуют 3 цифры и труба - \ | \ d {3} \ |ИЛИ - |Двоеточие, за которым следуют 2 цифры и 0 или 1 заглавная буква, затем двоеточие -: \ d \ d [AZ] {0,1}:ИЛИ - |Цифра с последующей косой чертой - \ d /ИЛИ - |Скобка, затем цифра, затем двоеточие - (\ d:

Как только у вас есть этот список:Найти заменить: заменить все те, с шевроном (^)Текст в столбцы: разделить шеврон на новые строки. Образец инструмента: Пропустить 1 строкуПрисоединиться: По позиции записи вернуться к спискуФормула: создайте новое поле с объединенными данными.

Примечание. Я попытался дать решение здесь, поскольку оно далеко от того места, где вы находитесь. Зачастую в сообществе Alteryx вы получаете готовое решение.

...