作者 主題: SQL中 cast as int的語法...溢位  (閱讀 8286 次)

0 會員 與 1 訪客 正在閱讀本文。

alucardc

  • 可愛的小學生
  • *
  • 文章數: 22
    • 檢視個人資料
SQL中 cast as int的語法...溢位
« 於: 2012-06-07 08:28 »
我在一個資料表裡有兩個欄位 型態都是Varchar 但是裡面存的都是數字


我想要把這兩欄中 數字最大的那一個select出來

於是我用


select max(cast (欄位一 as int)) from table

select max(cast (欄位二 as int)) from table


問題在於第一欄成功 第二欄失敗

錯誤訊息是Arithmetic overflow or division by zero has occured

我猜是第二欄存的數字太大導致溢位

第一欄的數字是10位數 第二欄是13位數

int換成long阿 double什麼的都沒用 而且都是整數換成double會選到不正確的數字


有人能幫忙解決嗎??

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
Re: SQL中 cast as int的語法...溢位
« 回覆 #1 於: 2012-06-07 08:41 »
字串反向排序後再選TOP 1 呢?
Knowledge is Power

alucardc

  • 可愛的小學生
  • *
  • 文章數: 22
    • 檢視個人資料
Re: SQL中 cast as int的語法...溢位
« 回覆 #2 於: 2012-06-07 09:58 »
字串反向排序後再選TOP 1 呢?

請問這是什麼意思呢?? 什麼叫字串反向排序

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
Re: SQL中 cast as int的語法...溢位
« 回覆 #3 於: 2012-06-07 11:33 »
我這樣做:
Select top 1 teamID From BscDepartmentList Order by teamID desc ,其中teamID 是varChar
是可以把最大的數字(字串)給選擇出來的。

但是這樣是否為最佳解、效能方面的問題又或著有無其他東西可用我就不清楚了。
就如表單名字所示,這個資料表中的數據很少。

PS1:我是在SQL2K 上跑的。
PS2:也許可以試試看用LEN  去找一下是那個資料出錯 ?
« 上次編輯: 2012-06-07 11:36 由 redjack »
Knowledge is Power

alucardc

  • 可愛的小學生
  • *
  • 文章數: 22
    • 檢視個人資料
Re: SQL中 cast as int的語法...溢位
« 回覆 #4 於: 2012-06-08 08:51 »
我這樣做:
Select top 1 teamID From BscDepartmentList Order by teamID desc ,其中teamID 是varChar
是可以把最大的數字(字串)給選擇出來的。

但是這樣是否為最佳解、效能方面的問題又或著有無其他東西可用我就不清楚了。
就如表單名字所示,這個資料表中的數據很少。

PS1:我是在SQL2K 上跑的。
PS2:也許可以試試看用LEN  去找一下是那個資料出錯 ?


感謝 這方法應該不錯