簡體   English   中英

如何在SQL Server 2008中將Varchar轉換為Int?

[英]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不會有問題,但是像TABCRLF這樣的字符將顯示為空格,不會被LTRIMRTRIM修剪,並且將成為問題。

例如,嘗試以下方法:

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)

如果這是經常發生的事情,最好清理數據並修改表格填充的方式,以便在輸入之前刪除CRLF

你可以使用轉換功能:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM