+ -
当前位置:首页 → 问答吧 → 求一SQL

求一SQL

时间:2011-11-22

来源:互联网

SQL code

原数据
年         编号
       XXX[2009]XX号
       XXXX[2009]XX号
       XXX[2010]X号
       XXXX[2011]XXX号

得到结果 
 年        编号
2009   XXX[2009]XX号
2009   XXXX[2009]XX号
2010   XXX[2010]X号
2011   XXXX[2011]XXX号


作者: stmn1320   发布时间: 2011-11-22

格式固定的话.

select 年 = substring(编号 , charindex('[',编号) + 1 , charindex(']',编号) - charindex('[',编号) - 1) , 编号 from tb

作者: dawugui   发布时间: 2011-11-22

SQL code
create table tb(年 int,编号 nvarchar(20))
insert into tb(编号) select 'XXX[2009]XX号'
insert into tb(编号) select 'XXXX[2009]XX号'
insert into tb(编号) select 'XXX[2010]X号'
insert into tb(编号) select 'XXXX[2011]XXX号'
go
update tb set=SUBSTRING(编号,CHARINDEX('[',编号)+1,charindex(']',编号)-CHARINDEX('[',编号)-1)
select * from tb
/*
年           编号
----------- --------------------
2009        XXX[2009]XX号
2009        XXXX[2009]XX号
2010        XXX[2010]X号
2011        XXXX[2011]XXX号

(4 行受影响)

*/
go
drop table tb

作者: qianjin036a   发布时间: 2011-11-22

SQL code
select substring(编号,charindex('[',编号)-1,charindex(']',编号)-charindex('[',编号)) 编号 from tb

作者: ssp2009   发布时间: 2011-11-22

select substring(编号,charindex('[',编号)+1,4) from ab

作者: yubofighting   发布时间: 2011-11-22

保险的话,用:
select 年 = substring(编号 , charindex('[',编号) + 1 , charindex(']',编号) - charindex('[',编号) - 1) , 编号 from tb where 
charindex('[',编号) > 0 and charindex(']',编号) > 0 and charindex('[',编号) < charindex(']',编号)

作者: dawugui   发布时间: 2011-11-22

SQL code
--> 测试数据:#tb
if object_id('tempdb.dbo.#tb') is not null drop table #tb
create table #tb([] varchar(10),[编号] varchar(20))
insert #tb
select '','XXX[2009]XX号' union all
select '','XXXX[2009]XX号' union all
select '','XXX[2010]X号' union all
select '','XXXX[2011]XXX号'

select substring([编号],charindex('[',[编号])+1,charindex(']',[编号])-charindex('[',[编号])-1) as [],[编号]
from #tb
where charindex('[',[编号])>0 and charindex(']',[编号])>0
/*
年                    编号
-------------------- --------------------
2009                 XXX[2009]XX号
2009                 XXXX[2009]XX号
2010                 XXX[2010]X号
2011                 XXXX[2011]XXX号

(4 行受影响)


*/

作者: Beirut   发布时间: 2011-11-22

SQL code
select substring(编号,charindex('[',编号)-1,charindex(']',编号)-charindex('[',编号)) 编号 from tb

作者: fredrickhu   发布时间: 2011-11-22

SQL code
if object_id('t1') is not null
drop table t1
go
create table t1([] varchar(10),[编号] varchar(50) )
go
insert t1
select null,'XXX[2009]XX号' union all
select null,'XXXX[2009]XX号' union all
select null,'XXX[2010]X号' union all
select null,'XXXX[2011]XXX号'
go
select substring([编号],charindex('[',[编号])+1,4) as [],[编号] from t1
/*
(所影响的行数为 4 行)
年        编号
----      -----
2009    XXX[2009]XX号
2009    XXXX[2009]XX号
2010    XXX[2010]X号
2011    XXXX[2011]XXX号

*/
go
drop table t1


作者: xiaolinyouni   发布时间: 2011-11-22

SQL code
use Tempdb
go
--> --> 
 
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([] NVARCHAR(4),[编号] nvarchar(20))
Insert #T
select null,N'XXX[2009]XX号' union all
select null,N'XXXX[2009]XX号' union all
select null,N'XXX[2010]X号' union all
select null,N'XXXX[2011]XXX号'
Go
DECLARE @s NVARCHAR(20)
UPDATE #T
SET []=left(@s,CHARINDEX(']',@s)-1),@s=STUFF([编号],1,CHARINDEX('[',[编号]),'')
go
SELECT * FROM #T

/*
年    编号
2009    XXX[2009]XX号
2009    XXXX[2009]XX号
2010    XXX[2010]X号
2011    XXXX[2011]XXX号
*/

作者: roy_88   发布时间: 2011-11-22