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
.
#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
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
是应该更新,弄错了
#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
.
#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
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
是应该更新,弄错了
#10
减1或者减2,如果数字有个1000或更大就不行了
#11
楼上很多正解,谢谢大家,问题解决了.马上结贴去.