学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

怎样将姓名与身份证号码分开插入到另外一张表?

怎样将姓名与身份证号码分开插入到另外一张表?

如下我有一张A表
A           B
1         张三/3213216545646
2         李四/455465456
3         李清照/87878
4         高不成/878789797
5         区阳大朋/5467987779
我要实现查询上面这张表将B列的姓名与身份证号码分开插入到新表中去,知身份证号码与姓名有/分开,请问怎样可以实现呢?要得到结果如下表:
A           B       C
1         张三     3213216545646
2         李四     455465456
3         李清照   87878
4         高不成   878789797
5         区阳大朋 5467987779
劳烦各位高手帮忙,谢谢!

TOP

insert into NewTable
select A,left(B,charindex('/',B)-1),right(B,len(B)-charindex('/',B))
from A
--或者
insert into NewTable
select A,substring(B,1,charindex('/',B)-1),substring(B,charindex('/',B)+1,len(B))----已更正
from A
----------------------------------------------------------------------
left/right 函数取字符串(列)左/右侧指定长度的子字符串;
substring 函数从指定字符串(列)的指定起止位置取子字符串;
charindex 函数获取子字串在指定字符串(列)中的位置,其中不包含子字符串时返回0;
len 函数返回字符串(列)的长度。
---------------------------------------------------------------------
掌握并灵活运用这几个字符串函数可以解决绝大部分字符串操作问题。

[ 本帖最后由 provoke 于 2008-4-20 19:56 编辑 ]
爱我至爱,至死不渝!

TOP

回复2#

insert into NewTable
select A,left(B,charindex('/',B)-1),right(B,len(B)-charindex('/',B))
from A
这种方法好像不行额。。后面的right方法不能实现把/后面的字符截取下来并存放到新表的字段中。。
而这种方法:
、insert into NewTable
select A,substring(B,1,charindex('/',B)-1),substring(B,charindex('/',B)+1,len(B)-charindex('/',B))
from A
是可以的。。
我到现在还不解,哪位可以帮忙解答下。。

[ 本帖最后由 wonder_008 于 2008-4-18 12:54 编辑 ]

TOP

非常感谢两位...!

TOP

对了.select A,substring(B,1,charindex('/',B)-1),substring(B,charindex('/',B)+1)第二个SUBSTRING不是要带三个参数的吗?好像不对哦?

TOP

很好!
很强大!
萧坚

TOP

回复 5# 的帖子

一时粗心,。。是的。substring需要提供三个参数!!!

TOP

非常不好意思

substring(str,i,j)
函数的三个参数:
str为字符串或列名;
i为起点
j为终点
例如,substring('身份证号码/123',4,6)的返回值是'号码/',即返回第4到6位;
charindex(substr,str):返回子串substr在str中的位置,如果包含多个子串,则返回第一个子串的位置,如charindex('abc','100abcabcabc001')的返回值为3。
我在二楼给的两种方法都可以。

[ 本帖最后由 provoke 于 2008-4-20 20:09 编辑 ]
爱我至爱,至死不渝!

TOP

create table A (A int identity(1,1),B varchar(40))
go
create table B (A int identity(1,1),B varchar(20),C varchar(20))
go

insert into A(B) select '张三/3213216545646' union all select '李四/455465456'
union all select '李清照/87878' union all select '高不成/878789797'
union all select '区阳大朋/5467987779'



select B,left(B,charindex('/',B)-1),right(B,len(B)-charindex('/',B)) from A

insert into B (B,C)  select left(B,charindex('/',B)-1),right(B,len(B)-charindex('/',B)) from A

select * from A
select * from B

TOP

发新话题