对数字字段的第一个数字的 SQL 查询

Sim*_*mon 0 sql db2

我在 IBM db2 数据库中有一个 NUMERIC(5, 0) 字段,我只想要前 4 位数字。使用 CAST 无法实现我想要的效果。

如何在不转换为 String 和使用 substring 的情况下在 SQL 中实现这一点?

例如:13525 --> 1352

谢谢你的帮助!

Gor*_*off 5

为什么不转换为字符串并使用子字符串?

你也可以这样做:

select (case when field >= 10000 then floor(field / 10) else field end)
Run Code Online (Sandbox Code Playgroud)

这假设如果该字段具有1234,那么您想要1234而不是0123

编辑:

您还可以通过两次调用来使用字符串cast()

select cast(left(cast(field as varchar(5)), 4) as numeric(4, 0))
Run Code Online (Sandbox Code Playgroud)

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

select left(field, 4)
Run Code Online (Sandbox Code Playgroud)

并且数据库将进行适当的转换。我附近没有 DB2 来检查这个。