日期:2014-05-19  浏览次数:20413 次

求一简单SQL语句
如表1

    列1
基本要求
隔离栅和防落网实测项目
高度(mm)
镀(涂)层厚度(μm)
网面平整度(mm)
立柱埋深
立柱中距(mm)
混凝土强度(MPa)
立柱竖直度(mm/m)

怎么样能只取每个每个字段括号里的单位,如果没有单位的就取空值,要查询的结果如下
表2
列1
null
null
  mm
  μm
  mm
null
  mm
  MPa
mm/m


------解决方案--------------------
第一个错了,第二个测试通过.
------解决方案--------------------
drop table 表1
go
create table 表1(列1 varchar(100))
insert into 表1
select '基本要求 '
union select '隔离栅和防落网实测项目 '
union select '高度(mm) '
union select '镀(涂)层厚度(μm) '
union select '网面平整度(mm) '
union select '立柱埋深 '
union select '立柱中距(mm) '
union select '混凝土强度(MPa) '
union select '立柱竖直度(mm/m) '

select case when charindex( '( ',reverse(列1))> 0 then reverse(substring(reverse(列1),2,charindex( '( ',reverse(列1))-2)) else NULl end from 表1

/*
μm
mm
NULL
MPa
NULL
NULL
mm/m
mm
mm

(所影响的行数为 9 行)
*/
------解决方案--------------------
Create Table 表1
(列1 Nvarchar(50))
Insert 表1 Select N '基本要求 '
Union All Select N '隔离栅和防落网实测项目 '
Union All Select N '高度(mm) '
Union All Select N '镀(涂)层厚度(μm) '
Union All Select N '网面平整度(mm) '
Union All Select N '立柱埋深 '
Union All Select N '立柱中距(mm) '
Union All Select N '混凝土强度(MPa) '
Union All Select N '立柱竖直度(mm/m) '
GO
Select
(Case When CharIndex( ') ', REVERSE(列1)) > 0 Then REVERSE(Substring(REVERSE(列1), CharIndex( ') ', REVERSE(列1)) + 1 , CharIndex( '( ', REVERSE(列1)) - CharIndex( ') ', REVERSE(列1)) - 1))
Else Null End) As 列1
From
表1
GO
Drop Table 表1
--Result
/*
列1
NULL
NULL
mm
μm
mm
NULL
mm
MPa
mm/m
*/