0

我有一列作为项目名称,项目名称中的数据

1.1.1 chapter1
1.1.2 chapter2

我想将该单列分为两列

Major   Minor
1.1     .1 chapter1
1.1     .2 chapter2

我的项目名称列的数据类型是 nvarchar,我使用的是 sql 2005

有什么帮助吗?

4

2 回答 2

2

像这样的东西

declare @x nvarchar(500) = '1.1.1 chapter1'

select substring(@x,1,charindex('.',@x,1+charindex('.',@x))-1) as Major,
       substring(@x,charindex('.',@x,1+charindex('.',@x)),len(@x)-charindex('.',@x,1+charindex('.',@x))) as Minor

在您的查询中替换 @x ..

和它的小提琴:http ://sqlfiddle.com/#!3/d41d8/4424/0

更新为 . 在前面并证明错误

声明 @x nvarchar(500) = '1.1.1 第 1 章'

select @x,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,1,charindex('.',@x,1+charindex('.',@x))-1)
        else 'Cannot be parsed'
   end,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,charindex('.',@x,1+charindex('.',@x)),len(@x)-charindex('.',@x,1+charindex('.',@x))+1)
        else 'Cannot be parsed'
   end

并且没有 . 在前

声明 @x nvarchar(500) = '1.1.1 第 1 章'

select @x,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,1,charindex('.',@x,1+charindex('.',@x))-1)
        else 'Cannot be parsed'
   end,
   case when charindex('.',@x,1+charindex('.',@x)) <> 0 then substring(@x,1+charindex('.',@x,1+charindex('.',@x)),len(@x)-charindex('.',@x,1+charindex('.',@x)))
        else 'Cannot be parsed'
   end

http://sqlfiddle.com/#!3/d41d8/4430/0

于 2012-09-15T07:42:00.540 回答
0
select substring(ProjectName,1,charindex('.',ProjectName,charindex('.',@t)+1)) as Major
于 2012-09-15T07:55:11.013 回答