2014-09-26 65 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

相關問題