如何在多个字符串与TSQL匹配时检索多个值?

时间:2012-02-10 08:13:35

标签: loops sql-server-2008-r2 common-table-expression

考虑一个包含

的表
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执行此操作。

1 个答案:

答案 0 :(得分:0)

使用CTE结束,将值添加到临时表中,然后迭代结果并执行一些逻辑。