我有一列作为项目名称,项目名称中的数据
1.1.1 chapter1
1.1.2 chapter2
我想将该单列分为两列
Major Minor
1.1 .1 chapter1
1.1 .2 chapter2
我的项目名称列的数据类型是 nvarchar,我使用的是 sql 2005
有什么帮助吗?
我有一列作为项目名称,项目名称中的数据
1.1.1 chapter1
1.1.2 chapter2
我想将该单列分为两列
Major Minor
1.1 .1 chapter1
1.1 .2 chapter2
我的项目名称列的数据类型是 nvarchar,我使用的是 sql 2005
有什么帮助吗?
像这样的东西
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
select substring(ProjectName,1,charindex('.',ProjectName,charindex('.',@t)+1)) as Major