23.text与ntext字段的赋值和合并处理案例

本文详细介绍如何使用SQL语句实现表间数据的复制、更新和合并操作,包括条件性的数据迁移和列数据的合并,适用于数据库管理和数据整合场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--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 ''
		UPDATETEXT tb.col @p NULL 0 tb.col1 @p1
		UPDATETEXT tb.col @p NULL 0 ''
	END
	IF TEXTVALID('tb.col2',@p2)=1
	BEGIN
		UPDATETEXT tb.col @p NULL 0 ''
		UPDATETEXT tb.col @p NULL 0 tb.col2 @p2
		UPDATETEXT tb.col @p NULL 0 ''
	END
	FETCH tb INTO @p,@p1,@p2
END
CLOSE tb
DEALLOCATE tb
GO

--显示结果
SELECT * FROM tb
DROP TABLE tb
/*--结果
col                              col1            col2 
-------------------------------------- ----------------------- ---------------------- 
ac2                 NULL           c2
b2c2    b2              c2
b3                  b3              NULL
--*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值