日期:2014-05-18 浏览次数:20695 次
create table tb(SSH nvarchar(20),FLH nvarchar(20),SCH nvarchar(20),FCH nvarchar(20))
insert into tb(SSH) select 'D668*5*上*'
insert into tb(SSH) select 'D668*5*下*'
insert into tb(SSH) select 'G*59*第一辑.下册*'
insert into tb(SSH) select 'G*59*第一辑.上册*'
insert into tb(SSH) select 'G*59*第三辑.上册*'
go
update tb 
set FLH=LEFT(ssh,charindex('*',ssh)-1),
SCH=SUBSTRING(SSH,charindex('*',ssh)+1,charindex('*',ssh,charindex('*',ssh)+1)-charindex('*',ssh)-1),
FCH=SUBSTRING(ssh,charindex('*',ssh,charindex('*',ssh)+1)+1,LEN(ssh)-charindex('*',ssh,charindex('*',ssh)+1)-1)
select * from tb
/*
SSH                  FLH                  SCH                  FCH
-------------------- -------------------- -------------------- --------------------
D668*5*上*            D668                 5                    上
D668*5*下*            D668                 5                    下
G*59*第一辑.下册*         G                    59                   第一辑.下册
G*59*第一辑.上册*         G                    59                   第一辑.上册
G*59*第三辑.上册*         G                    59                   第三辑.上册
(5 行受影响)
*/
go
drop table tb
------解决方案--------------------
教好了,请结帖.
------解决方案--------------------
charindex 和 substring的应用
------解决方案--------------------
create table tb(SSH nvarchar(20),FLH nvarchar(20),SCH nvarchar(20),FCH nvarchar(20))
insert into tb(SSH) select 'D668*5*上*'
insert into tb(SSH) select 'D668*5*下*'
insert into tb(SSH) select 'G*59*第一辑.下册*'
insert into tb(SSH) select 'G*59*第一辑.上册*'
insert into tb(SSH) select 'G*59*第三辑.上册*'
go
update tb 
set flh = replace(parsename(replace(replace(left(SSH,len(ssh)-1), '.' , '#'),'*','.'),3),'#','.'),
    SCH = replace(parsename(replace(replace(left(SSH,len(ssh)-1), '.' , '#'),'*','.'),2),'#','.'),
    fCH = replace(parsename(replace(replace(left(SSH,len(ssh)-1), '.' , '#'),'*','.'),1),'#','.')
select * from tb
drop table tb
/*
SSH                  FLH                  SCH                  FCH                  
-------------------- -------------------- -------------------- -------------------- 
D668*5*上*            D668                 5                    上
D668*5*下*            D668                 5                    下
G*59*第一辑.下册*         G                    59                   第一辑.下册
G*59*第一辑.上册*         G                    59                   第一辑.上册
G*59*第三辑.上册*         G                    59                   第三辑.上册
(所影响的行数为 5 行)
*/