2014-09-26 66 views
0

我在IBM db2数据库中有一个NUMERIC(5,0)字段,我只希望前四位数字。使用CAST我一直无法达到我想要的。对数字字段的第一个数字进行的SQL查询

我怎样才能实现这一点在SQL中没有强制转换为字符串和使用子字符串?

例如:13525 - > 1352

感谢您的帮助!

+0

总是5位数? – 2014-09-26 19:29:51

+0

@ChrisBarlow是的 – Simon 2014-09-26 19:30:34

回答

4

为什么不投射为字符串并使用子字符串?

你也可以这样做:

select (case when field >= 10000 then floor(field/10) else field end) 

此假设,如果该字段有1234,那么你要1234而非0123

编辑:

你也可以使用一个字符串,通过使用两个调用cast()

select cast(left(cast(field as varchar(5)), 4) as numeric(4, 0)) 

我也应该注意到,在许多数据库中,你可以这样做:

select left(field, 4) 

和数据库将执行适当的转换。我没有附近的DB2来检查这一点。

+0

我知道这是可能的,但正如问题中所述,我想要一个不使用子字符串的解决方案。 – Simon 2014-09-26 19:30:16

+1

@Simon此解决方案不使用子字符串。 – dasblinkenlight 2014-09-26 19:30:48

+0

@dasblinkenlight是的,我指的是答案的第一行。发布的查询似乎工作正常,但我想知道是否有一个“更干净”的方式来做到这一点。如果不是,我会接受这个答案,因为它符合我的需要。 – Simon 2014-09-26 19:31:51

相关问题