--1. 把一个表的text数据复制到另一个表。
--测试数据
CREATE TABLE #a(id int,a text)
INSERT #a SELECT 1,'AA'
UNION ALL SELECT 2,'BB'
CREATE TABLE #b(id int,b text)
INSERT #b SELECT 1,'XX'
--用#a.a替换#b.b的数据,条件是#a.id=#b.id
UPDATE b SET b=a.a
FROM #a a,#b b
WHERE a.id=b.id
--把#a的数据复制到#b,条件是#a.id不在#b.id中
INSERT #b(id,b) SELECT id,a FROM #a a
WHERE NOT EXISTS(SELECT * FROM #b WHERE id=a.id)
--显示处理结果
SELECT * FROM #b
DROP TABLE #a,#b
/*--结果
id b
---------------- -------
1 AA
2 BB
--*/
GO
/*===============================================*/
--2. 将tb表中的col1及col2列中的数据合并到col列中,并且在合并的数据前后加上列标识。
--测试数据
CREATE TABLE tb(col text,col1 text,col2 text)
INSERT tb SELECT 'a' ,NULL,'c2'
UNION ALL SELECT NULL,'b2','c2'
UNION ALL SELECT '' ,'b3',NULL
GO
--更新处理
DECLARE @p binary(16),@p1 binary(16),@p2 binary(16)
DECLARE tb CURSOR LOCAL
FOR
SELECT TEXTPTR(col),TEXTPTR(col1),TEXTPTR(col2) FROM tb
OPEN tb
FETCH tb INTO @p,@p1,@p2
WHILE @@FETCH_STATUS=0
BEGIN
IF TEXTVALID('tb.col',@p)=0
BEGIN
UPDATE tb SET col='' WHERE CURRENT OF tb
UPDATE tb SET @p=TEXTPTR(col) WHERE CURRENT OF tb
END
IF TEXTVALID('tb.col1',@p1)=1
BEGIN
UPDATETEXT tb.col @p NULL 0 ' <col1>'
UPDATETEXT tb.col @p NULL 0 tb.col1 @p1
UPDATETEXT tb.col @p NULL 0 ' </col1>'
END
IF TEXTVALID('tb.col2',@p2)=1
BEGIN
UPDATETEXT tb.col @p NULL 0 ' <col2>'
UPDATETEXT tb.col @p NULL 0 tb.col2 @p2
UPDATETEXT tb.col @p NULL 0 ' </col2>'
END
FETCH tb INTO @p,@p1,@p2
END
CLOSE tb
DEALLOCATE tb
GO
--显示结果
SELECT * FROM tb
DROP TABLE tb
/*--结果
col col1 col2
-------------------------------------- ----------------------- ----------------------
a <col2>c2 </col2> NULL c2
<col1>b2 </col1> <col2>c2 </col2> b2 c2
<col1>b3 </col1> b3 NULL
--*/
表与表之间的复制与合并
最新推荐文章于 2024-11-05 15:26:40 发布