如何sql server 获取第二个‘-’左右俩边值?
本帖最后由 poppin19 于 2013-04-03 11:53:00 编辑
有个字符串字段格式如下,如何获取第二个‘-’左边的值和右边的值?
字段
B10-1-40
B10-1-5
B10-1-6
B10-1-7
------解决方案--------------------左边的值:LEFT(档案号, 5)
右边的值:SUBSTRING(档案号, 7,6) 第二个数字大雨或等于右边的数值宽度
------解决方案--------------------if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (col nvarchar(16))
insert into [TB]
select 'B10-1-40' union all
select 'B10-1-5' union all
select 'B10-1-6' union all
select 'B10-1-7'
select * from [TB]
SELECT PARSENAME(REPLACE(col, '-', '.'), 3) ,
PARSENAME(REPLACE(col, '-', '.'), 2) ,
PARSENAME(REPLACE(col, '-', '.'), 1)
FROM dbo.TB
/*
(无列名) (无列名) (无列名)
B10 1 40
B10 1 5
B10 1 6
B10 1 7*/
------解决方案--------------------if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (col nvarchar(16))
insert into [TB]
select 'B10-1-40' union all
select 'B10-1-5' union all
select 'B10-1-6' union all
select 'B10-1-7'
select *,
stuff(col,1,charindex('-',col,charindex('-',col)+1),'') from [TB]
/*
B10-1-40 40
B10-1-5 5
B10-1-6 6
B10-1-7 7
(所影响的行数为 4 行)