首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

想提取字符,请高手指教解决思路

2012-01-15 
想提取字符,请高手指教现有一列数据想拆分,SSHFLHSCHFCHD668*5*上*D668*5*下*G*59*第一辑.下册*G*59*第一

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


  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 上
   


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


[解决办法]

SQL code
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*第三辑.上册*'goupdate 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 行受影响)*/godrop table tb
[解决办法]
教好了,请结帖.
[解决办法]
charindex 和 substring的应用
[解决办法]
SQL code
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*第三辑.上册*'goupdate 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 tbdrop 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 行)*/ 

热点排行
Bad Request.