sql数据库如何追加字段内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库如何追加字段内容相关的知识,希望对你有一定的参考价值。

一个sql数据库中有一个表dede_addonarticle,这个表中有一列叫body.现在body列中已经有内容,我现在想在已有内容后面加上新的内容,例:原有内容是"中国人民万岁"等,现在想在所有的记录后,都加上"世界人民大团结".
答案试用结果:
update dede_addonarticle set body=body||'世界人民大团结' where typeid=11

其中typeid是要修改内容的栏目id。执行结果无报错,但是实际更新后的内容变成0

补充2:表的结构如下:
CREATE TABLE `dede_addonarticle` (
`aid` int(11) NOT NULL default '0',
`typeid` int(11) NOT NULL default '0',
`body` mediumtext,
PRIMARY KEY (`aid`),
KEY `typeid` (`typeid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk

SQL Server专门提供了处理text,ntext,image字段的函数,是:TEXTPTR
TEXTVALID、READTEXT、UPDATETEXT、WRITETEXT

解决方法:

Declare @ptrval binary(16)  
SELECT @ptrval=TEXTPTR(content) from table Where id=@id  
UPDATETEXT table.content @ptrval null 0 @info  
--其中@info就是需要追加的字符串变量

说明:第二行加上条件 可以定位当前操作的是哪一条记录
@ptrval 后面的第一个参数(null):值为0 表示将新数据插入到现有位置的开始处。值为 NULL 则将新数据追加到现有数据值中。
@ptrval 后面的第二个参数(0):值为0 表示不删除数据。

值为 NULL 则删除现有 text 或 image 列中从 insert_offset 位置开始到末尾的所有数据。

参考技术A update dede_addonarticle set body=body||'世界人民大团结' where body='中国人民万' 参考技术B update dede_addonarticle set body='中国人民万岁,世界人民大团结' where body='中国人民万岁'本回答被提问者采纳 参考技术C 企业管理器—-选择表---右键(设计表) 参考技术D 这个好用.

update dede_addonarticle set [body] = [body] +'世界人民大团结'

如何通过SQL按内容拆分字段(将一个字段值拆分两个字段)

通过SQL按内容分拆成多字段

需求描述

将表里的一个字段,该字段的某行开始是key,随后对应的是其value,将key和value分别拆分对应的两个字段。如下图示例:

 问题分析

该问题不适合用SQL来处理,因为SQL主要处理表格形式的结构化数据,用程序语言如Java、Python等更方便些。

解决方法

-- # SQL不擅长处理这种数据,用程序语言更方便些。
-- Step1 创建表并初始化数据
CREATE TABLE tb_data(
data varchar(20)
)
INSERT INTO tb_data
SELECT 'a.wav' data UNION 
SELECT 1 data UNION 
SELECT 2 data UNION 
SELECT 'b.wav' data UNION 
SELECT 3 data UNION 
SELECT 4 data UNION 
SELECT 'c.wav' data UNION 
SELECT 5 data UNION
SELECT 6 data  UNION
SELECT 7 data 

-- SELECT * FROM tb_data
-- Step2 创建临时表tmp_data,主要存记录序号、分割开始位置、记录数。
-- DROP TABLE tmp_data;
create TEMPORARY table tmp_data(
id int,
data varchar(20),
pos smallint,
cnt int
)

-- Step3 插入临时表。
INSERT INTO tmp_data
SELECT (@i:=@i+1)id,tb_data.*,INSTR(data,'.') dot,cnt
FROM tb_data,(select @i:=0)t ,(SELECT COUNT(1) cnt FROM tb_data) t2 

SELECT * FROM tmp_data

-- Step4 拆分字段 
SELECT B.data,A.data seq
-- * 
FROM tmp_data A
JOIN 
(
		SELECT * ,
		CASE WHEN LEAD(id)OVER(order by id) IS NULL THEN 999999 ELSE LEAD(id)OVER(order by id) END as next
		FROM tmp_data
		WHERE pos>0
) B
ON A.id > B.id AND A.id < B.next

-- Step 4 查看结果
/*
data	seq
a.wav	1
a.wav	2
b.wav	3
b.wav	4
c.wav	5
c.wav	6
c.wav	7
*/

 

 

以上是关于sql数据库如何追加字段内容的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 追加 数据

sql导入DBF程序

VB.net在原数据库内容的基础上追加新字段并对新字段进行赋值

mysql删除重复的数据(仅一个字段),sql怎么写

oracle SQL查询中,如何在where中用条件语句,判断不同情况,追加不同的And条件?

sql查询中如何去除某个字段重复的数据