SQL 合并text类型的数据

来源:百度知道 编辑:UC知道 时间:2024/07/02 01:23:10
SQL问题:
如何把多行的text类型数据合并
例如:A表tx字段(text类型)有很多条记录,现在要把这些记录合并插入B表tx字段(text类型)的某一条记录

注意:合并后记录的长度过万条,不能用varchar(只有8000长度)变量作循环相加。
DOXFREE朋友 能否把SQL代码每句注释一下,游标没用过,很多看不懂~~

不考虑性能问题的话,可以用游标和字符串指针来实现;
举个简单的例子给你参考一下,有A和B两个表,两个表的结构完全一样,只有两个字段,ID, Content,字段类型分别是INT和TEXT
A表
ID Content
1 A
2 B
3 C
4 D
B表
ID Content
1 空
现在就是要将A表中Content字段的所有记录合并然后更新到B表中的第一条记录,结果应该是
ID Content
1 ABCD

实现上述功能的脚本如下:
DECLARE @ID INT --定义@ID变量
DECLARE IDS CURSOR FAST_FORWARD --定义游标,游标名为IDS
FOR
SELECT ID FROM A ORDER BY ID -- 选择A表中所有ID并填充游标,比如A表中有三条记录,ID分别是1,2,3,则将1,2,3填充到游标
OPEN IDS --打开游标
FETCH IDS INTO @ID --取出游标中的第一个ID值并保存到@ID变量,比如游标中有1,2,3三个值,则将1保存到@ID变量
WHILE @@Fetch_Status = 0 --进入循环,@@Fetch_Status = 0表示无法再从游标中获取任何行则退出循环
BEGIN
DECLARE @ptrVal_A VARBINARY(16) --定义@ptrVal_A变量
DECLARE @ptrVal_B VARBINARY(16) --定义@ptrVal_B变量
SELECT @ptrVal_A = TEXTPTR(Content) FROM A WHERE ID=@ID --从A表中读取当前ID值Content字段的字符串指针,保存到@ptrVal_A变量
SELECT @ptrVal_B = TEXTPTR(Content) FROM B WHERE ID=1 --从B表中读取ID值为1的Content字段的字符串指针,保存到@ptrVal_B变量 <