[英]How to convert Varchar to Int in sql server 2008?
如何在sql server 2008中將Varchar轉換為Int。
當我試圖運行它時,我有以下代碼不允許我將Varchar轉換為Int。
Select Cast([Column1] as INT)
Column1是Varchar(21)NOT NULL類型,我想將它轉換為Int。 實際上我正在嘗試將Column1插入另一個具有Field為INT的表中。 有人可以幫我轉換一下嗎?
空間對於cast
不會有問題,但是像TAB
, CR
或LF
這樣的字符將顯示為空格,不會被LTRIM
或RTRIM
修剪,並且將成為問題。
例如,嘗試以下方法:
declare @v1 varchar(21) = '66',
@v2 varchar(21) = ' 66 ',
@v3 varchar(21) = '66' + char(13) + char(10),
@v4 varchar(21) = char(9) + '66'
select cast(@v1 as int) -- ok
select cast(@v2 as int) -- ok
select cast(@v3 as int) -- error
select cast(@v4 as int) -- error
檢查輸入中是否有這些字符,如果找到它們,請使用REPLACE
清理數據。
根據您的評論,您可以使用REPLACE
作為cast
一部分:
select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)
如果這是經常發生的事情,最好清理數據並修改表格填充的方式,以便在輸入之前刪除CR
和LF
。
你可以使用轉換功能:
Select convert(int,[Column1])
這就是你怎么做的,它會拋出一個錯誤嗎? 您確定要轉換的價值是否可轉換? 出於顯而易見的原因,您無法將abc123
轉換為int。
UPDATE
根據您的評論,我將刪除您嘗試轉換的值中的任何空格。
只要您沒有任何字母字符或NULL值,這是將其轉換為INT的正確方法。
如果您有任何NULL值,請使用
ISNULL(column1, 0)
請嘗試以下代碼。 在大多數情況下,它是由逗號問題引起的。
cast(replace([FIELD NAME],',','') as float)
嘗試使用以下命令,它將詢問所有值為INT
選擇isnumeric時的大小寫(YourColumn +'.0e0')= 1然后強制轉換(YourColumn as int)其他NULL結束/ *大小寫* /來自YourTable
SQL中有兩種類型的轉換方法。
CAST和CONVERT具有類似的功能。 CONVERT特定於SQL Server,並且在日期和時間值,小數和貨幣符號之間進行轉換時允許更大的靈活性。 CAST是這兩個函數的ANSI標准。
使用轉換
Select convert(int,[Column1])
使用Cast
Select cast([Column1] as int)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.