怎么把数据表中的一个字段的值插入到另一个字段中

时间:2021-11-07 15:06:01
比如有一张表table中两个字段,cellname有值,copyname初为空.如下

cellname     copyname
张三1     
李四1
王五2
赵钱3
丁云5
李雷6
..........


想实现这样的效果(就是把后面那个数字去掉,插到copyname中去),如下
cellname     copyname
张三1    张三 
李四1    李四
王五2    王五
赵钱3    赵钱
丁云5    丁云
李雷6    李雷

在sql语句中应该怎么实现呢,(数据量太多,一个一个复制粘帖工作量很大)谢谢,在线等.


11 个解决方案

#1


INSERT TB (copyname )SELECT LEFT(cellname,LEN(cellname)-1) FROM TB

#2



update tb
set copyname=left(cellname,len(cellname)-1)    

#3


引用 2 楼 js_szy 的回复:
SQL codeupdate tbset copyname=left(cellname,len(cellname)-1)
.

#4


楼上均正解!

#5


update tb
set copyname=left(cellname,patindex('%[^吖-做]%')-1)

#6


update tb set copyname=left(cellname,len(cellname)-2) --有空格的话就减2

#7



update tb
set copyname=substring(cellname,1,len(cellname)-1) 

#8


引用 5 楼 josy 的回复:
SQL codeupdate tbset copyname=left(cellname,patindex('%[^吖-做]%')-1)

if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([cellname] varchar(5),[copyname] varchar(5))
insert [tb]
select '张三1',null union all
select '李四1',null union all
select '王五2',null union all
select '赵钱3',null union all
select '丁云5',null union all
select '李雷6',null

update tb
set copyname=left(cellname,patindex('%[^吖-做]%',cellname)-1)

select * from tb

--测试结果:
/*
cellname copyname
-------- --------
张三1      张三
李四1      李四
王五2      王五
赵钱3      赵钱
丁云5      丁云
李雷6      李雷

(6 行受影响)

*/

#9


引用 1 楼 sql77 的回复:
SQL codeINSERT TB (copyname )SELECTLEFT(cellname,LEN(cellname)-1)FROM TB

是应该更新,弄错了

#10


减1或者减2,如果数字有个1000或更大就不行了

#11


楼上很多正解,谢谢大家,问题解决了.马上结贴去.

#1


INSERT TB (copyname )SELECT LEFT(cellname,LEN(cellname)-1) FROM TB

#2



update tb
set copyname=left(cellname,len(cellname)-1)    

#3


引用 2 楼 js_szy 的回复:
SQL codeupdate tbset copyname=left(cellname,len(cellname)-1)
.

#4


楼上均正解!

#5


update tb
set copyname=left(cellname,patindex('%[^吖-做]%')-1)

#6


update tb set copyname=left(cellname,len(cellname)-2) --有空格的话就减2

#7



update tb
set copyname=substring(cellname,1,len(cellname)-1) 

#8


引用 5 楼 josy 的回复:
SQL codeupdate tbset copyname=left(cellname,patindex('%[^吖-做]%')-1)

if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([cellname] varchar(5),[copyname] varchar(5))
insert [tb]
select '张三1',null union all
select '李四1',null union all
select '王五2',null union all
select '赵钱3',null union all
select '丁云5',null union all
select '李雷6',null

update tb
set copyname=left(cellname,patindex('%[^吖-做]%',cellname)-1)

select * from tb

--测试结果:
/*
cellname copyname
-------- --------
张三1      张三
李四1      李四
王五2      王五
赵钱3      赵钱
丁云5      丁云
李雷6      李雷

(6 行受影响)

*/

#9


引用 1 楼 sql77 的回复:
SQL codeINSERT TB (copyname )SELECTLEFT(cellname,LEN(cellname)-1)FROM TB

是应该更新,弄错了

#10


减1或者减2,如果数字有个1000或更大就不行了

#11


楼上很多正解,谢谢大家,问题解决了.马上结贴去.