用于从varchar字段获取数值的SQL查询

时间:2012-01-10 10:20:09

标签: sql sql-server ssrs-2008

我有一个名为Barname的列,其中包含所有项目的文本名称。

所有项目在名称前面都有一个数字,在数字和文本之间有句号。

e.g

1.Project name one
2.Project name two
20.Project name twenty
50.Project name fifty

我需要创建一个新列,以允许我对数值进行排序,所以我需要的是一个从名称中取数字值并忽略句号和文本的命令。

所以我的新专栏(基于上面的例子)

1
2
20
50

4 个答案:

答案 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)创建数组,然后获取数组的第一个元素