TSQL如何在解析行时迭代行?

Bob*_*b L 3 sql t-sql sql-server parsing stored-procedures

对不起,问题措辞不好,我不知道怎么形容这个.我想迭代遍历表中的每一行,同时这样做,提取一个列,解析其中的varchar,并根据它找到的行插入到另一个表中.有点像这样:

DECLARE @string varchar(max);
foreach row in (select * from Table) {
    set @string = row[column];
    while (len(@string) > 0) {
        -- Do all the parsing in here

        if (found what was looking for)
            insert into Table2 values(row[column2], row[column3]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将是一个非常好的存储过程,因此它可以在SQL中完成.我不太确定如何处理它.谢谢.

编辑:

这基本上是我希望的功能:

Table 1   |
id_number | text    |
1           Hello, test 532. Yay oh and test 111   
2           test 932.
3           This is a test 315 of stuff test 555.
4           haflksdhfal test 311 sadjhfalsd
5           Yay.
Run Code Online (Sandbox Code Playgroud)

我想通过这个表并解析所有文本列以查找'test#'的实例,其中#是一个数字.当它以该格式在文本中找到某些内容时,它会将该值插入另一个表中,如:

Table 2   |
id_number | number
1           532
1           111
2           932
3           315
3           555
4           311
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

你在程序上思考而不是基于集合.您可以将整个事件编写为单个查询:

INSERT INTO target_table (column list)
SELECT (column list)
FROM source_table
WHERE (parse your column) = (some criterion)
Run Code Online (Sandbox Code Playgroud)

编写起来要容易得多,也可能更快.

如果您的解析函数很复杂,您可以将其放入用户定义的函数中,而不是直接将其嵌入到查询中.