我有一个名为Barname的列,其中包含所有项目的文本名称。
所有项目在名称前面都有一个数字,在数字和文本之间有句号。
e.g
1.Project name one
2.Project name two
20.Project name twenty
50.Project name fifty
我需要创建一个新列,以允许我对数值进行排序,所以我需要的是一个从名称中取数字值并忽略句号和文本的命令。
所以我的新专栏(基于上面的例子)
1
2
20
50
答案 0 :(得分:3)
使用此表达式(在SQL中,而不是SSRS):
CAST(LEFT(MyColumn, CHARINDEX('.', MyColumn) - 1) AS int)
编辑,并非所有行都有点
CASE
WHEN CHARINDEX('.', MyColumn) > 0 THEN
CAST(LEFT(MyColumn, CHARINDEX('.', MyColumn) - 1) AS int)
-- ELSE nothing, just let it be NULL because we can't apply the require logic
END
答案 1 :(得分:1)
怎么样
ALTER t ADD COLUMN id INT
UPDATE t
SET id = SUBSTRING(column1, 1, CHARINDEX('.', column1) - 1)
答案 2 :(得分:1)
以下是一个完整的例子:
declare @test varchar(30)
select @test = '12.Project name one'
declare @res int
-- the command that you need is this
select @res = convert(int, substring(@test, 1, charindex('.', @test) - 1))
select @res
答案 3 :(得分:0)
您可以使用explode('。',$ string)创建数组,然后获取数组的第一个元素