亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CAST和IsNumeric

CAST和IsNumeric

子衿沉夜 2019-11-19 09:55:43
為什么以下查詢返回“將數據類型varchar轉換為bigint時出錯”?IsNumeric不使CAST安全嗎?我已經嘗試了轉換中的每個數值數據類型,并得到相同的“錯誤轉換...”錯誤。我不認為結果數的大小有問題,因為溢出是一個不同的錯誤。有趣的是,在Management Studio中,結果實際上在錯誤再次出現之前一瞬間顯示在結果窗格中。SELECT CAST(myVarcharColumn AS bigint)  FROM myTable  WHERE IsNumeric(myVarcharColumn) = 1 AND myVarcharColumn IS NOT NULL  GROUP BY myVarcharColumn有什么想法嗎?
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

如果varchar值可以轉換為ANY數字類型,則IsNumeric返回1。這包括int,bigint,十進制,數字,實數和浮點數。


科學計數法可能會給您造成問題。例如:


Declare @Temp Table(Data VarChar(20))


Insert Into @Temp Values(NULL)

Insert Into @Temp Values('1')

Insert Into @Temp Values('1e4')

Insert Into @Temp Values('Not a number')


Select Cast(Data as bigint)

From   @Temp

Where  IsNumeric(Data) = 1 And Data Is Not NULL

您可以使用IsNumeric技巧,使具有科學計數法的數字返回0。您可以應用類似的技巧來防止十進制值。


IsNumeric(YourColumn +'e0')


IsNumeric(YourColumn +'.0e0')


試試看。


SELECT CAST(myVarcharColumn AS bigint)

FROM myTable

WHERE IsNumeric(myVarcharColumn + '.0e0') = 1 AND myVarcharColumn IS NOT NULL

GROUP BY myVarcharColumn


查看完整回答
反對 回復 2019-11-19
  • 3 回答
  • 0 關注
  • 621 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號