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)
你在程序上思考而不是基于集合.您可以将整个事件编写为单个查询:
INSERT INTO target_table (column list)
SELECT (column list)
FROM source_table
WHERE (parse your column) = (some criterion)
Run Code Online (Sandbox Code Playgroud)
编写起来要容易得多,也可能更快.
如果您的解析函数很复杂,您可以将其放入用户定义的函数中,而不是直接将其嵌入到查询中.