考虑一个包含
的表ReturnValueID | ReturnValue TriggerValue
------------------------------------------
1 | returnValue1 | testvalue
2 | returnValue2 | testing...
3 | returnValue3 | value3
并给出一个字符串:HERE IS THE TEXT testing... AND MORE TEXT testvalue MORE TEXT
我使用SQL Server 2008编写了一个CTE,它使用我写的FindInString()函数来指示找到匹配文本的位置。 0 =未找到:
1 | returnValue1 | 43
2 | returnValue2 | 18
3 | returnValue3 | 0
我现在需要做的是在循环中遍历此结果集,我将根据每一行执行一些额外的逻辑。
我已经看到了一些循环的例子,但我宁愿不使用游标。
最好的方法是什么?
感谢。
- 更新 -
一旦匹配,匹配行的ID将添加到表中,如果它尚不存在,则返回值将附加到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
必须对来自CTE的每个匹配的TriggerValue执行此操作。
答案 0 :(得分:0)
使用CTE结束,将值添加到临时表中,然后迭代结果并执行一些逻辑。