Рассмотрим таблицу, которая содержит
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.