读书人

怎么sql server 获取第二个‘-’左右俩

发布时间: 2013-04-05 10:24:33 作者: rapoo

如何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

/*
(无列名)(无列名)(无列名)
B10140
B1015
B1016
B1017*/

[解决办法]
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 行)

读书人网 >SQL Server

热点推荐