Как получить несколько значений, когда несколько строк соответствуют TSQL? - PullRequest
0 голосов
/ 10 февраля 2012

Рассмотрим таблицу, которая содержит

ReturnValueID | ReturnValue   TriggerValue
------------------------------------------
      1       | returnValue1 | testvalue
      2       | returnValue2 | testing...
      3       | returnValue3 | value3

и задана строка: HERE IS THE TEXT testing... AND MORE TEXT testvalue MORE TEXT

Я написал CTE с использованием SQL Server 2008, который использует функцию FindInString (), которую я написалуказать, где найден соответствующий текст.0 = не найдено:

1 | returnValue1 | 43
2 | returnValue2 | 18
3 | returnValue3 | 0

Что мне нужно сделать сейчас, так это перебрать этот набор результатов в цикле, где я буду выполнять некоторую дополнительную логику на основе каждой строки.

У меня естьвидел несколько примеров зацикливания, но я бы предпочел не использовать курсор.

Как лучше всего подойти к этому?

Спасибо.

-ОБНОВЛЕНИЕ -

Как только сопоставление установлено, идентификатор сопоставляемой строки добавляется в таблицу, если она еще не существует, тогда возвращаемое значение добавляется к значению VARCHAR, еслион не существует в динамической строке:

IF NOT EXISTS   -- check if this value is already recorded
(
    SELECT *
    FROM RecordedReturnValue
    WHERE ReturnValueID  = @ReturnValueID 
)
BEGIN
    -- add the visitor/external tag ID to historical table
    INSERT INTO RecordedReturnValue (...)
    VALUES (...)

    -- function checks if string is already present
    SET @DynamicString = dbo.AppendDynamicOutput(@ReturnValue, @DynamicString)
END

Это должно быть выполнено для каждого соответствующего TriggerValue из CTE.

1 Ответ

0 голосов
/ 22 февраля 2012

Завершается использованием CTE, добавляет значения во временную таблицу, затем перебирает результаты и выполняет некоторую логику.

...