读书人

念提取字符请高手指教

发布时间: 2012-12-30 10:43:15 作者: rapoo

想提取字符,请高手指教
现有一列数据想拆分,


SSH FLH SCH FCH
D668*5*上*
D668*5*下*
G*59*第一辑.下册*
G*59*第一辑.上册*
G*59*第三辑.上册*



现在想把SSH中第一个'*'前的字符提到FLH中,然后第一个‘*’和第二个‘*’之间的字符放到SCH中,第二个‘*’和第三个‘*’的字符放到FCH中,
如:

SSH FLH SCH FCH
D668*5*上* D668 5 上



请高手教我!!!!急的很,在线等

[解决办法]

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 行)
*/

读书人网 >SQL Server

热点推荐