SQL Server删除前导0和数字后的所有字符

时间:2016-03-31 14:14:40

标签: sql sql-server

嘿,我是一个java开发人员,所以我通常不会这样做,所以请耐心等待。

我的表中的列看起来像

Column
001 - test
012 - test 2

当我选择时,我需要这些值如下所示:

1
12
...
...

提前致谢

1 个答案:

答案 0 :(得分:3)

您想要将前导数字转换为数字。我建议:

select cast(left(column, patindex('%[^0-9]%', column) as decimal(38))

我选择小数38是因为它是最大的精确数值(尽管int似乎足以满足您的目的)。

您也可以通过删除初始零并将结果保留为字符串来执行此操作:

select stuff(left(column, patindex('%[^0-9]%', column),
             1, patindex('%[^0]%', column) - 1, '')

而且,如果你知道总是三位数:

select cast(left(column, 3) as int)

和字符串:

select cast(cast(left(column, 3) as int) as varchar(3))