我在IBM db2數據庫中有一個NUMERIC(5,0)字段,我只希望前四位數字。使用CAST我一直無法達到我想要的。對數字字段的第一個數字進行的SQL查詢
我怎樣才能實現這一點在SQL中沒有強制轉換爲字符串和使用子字符串?
例如:13525 - > 1352
感謝您的幫助!
我在IBM db2數據庫中有一個NUMERIC(5,0)字段,我只希望前四位數字。使用CAST我一直無法達到我想要的。對數字字段的第一個數字進行的SQL查詢
我怎樣才能實現這一點在SQL中沒有強制轉換爲字符串和使用子字符串?
例如:13525 - > 1352
感謝您的幫助!
爲什麼不投射爲字符串並使用子字符串?
你也可以這樣做:
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來檢查這一點。
我知道這是可能的,但正如問題中所述,我想要一個不使用子字符串的解決方案。 – Simon 2014-09-26 19:30:16
@Simon此解決方案不使用子字符串。 – dasblinkenlight 2014-09-26 19:30:48
@dasblinkenlight是的,我指的是答案的第一行。發佈的查詢似乎工作正常,但我想知道是否有一個「更乾淨」的方式來做到這一點。如果不是,我會接受這個答案,因爲它符合我的需要。 – Simon 2014-09-26 19:31:51
總是5位數? – 2014-09-26 19:29:51
@ChrisBarlow是的 – Simon 2014-09-26 19:30:34