如何在SQL Server 2008中將Varchar轉換爲Int。如何將SQL Server 2008中的Varchar轉換爲Int?
我有以下代碼,當我試圖運行它時,不會允許我將Varchar轉換爲Int。
Select Cast([Column1] as INT)
Column1是Varchar(21)NOT NULL類型,我想將它轉換爲Int。 實際上,我正試圖將Column1插入到另一個表中,將Field作爲INT。 有人可以幫我轉換嗎?
如何在SQL Server 2008中將Varchar轉換爲Int。如何將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
。
這就是你會怎麼做的,它是拋出一個錯誤?你確定你試圖轉換的價值是可兌換的嗎?由於顯而易見的原因,您不能將abc123
轉換爲int。
UPDATE
根據您的意見我會刪除那些你正試圖轉換的值的任何空間。
@AbeMiessler/ 是我的在列中的值是66或2沒有單一的字符,但出現了一個只留下尾隨空白空間。 –
它拋出了什麼錯誤?你確定那裏沒有空格嗎? –
有沒有可能的NULL值? – Eric
只要您沒有任何字母字符或NULL值,這是將其轉換爲INT的正確方法。
如果您有任何NULL值,使用
ISNULL(column1, 0)
是的,我知道ISNULL,但我們沒有任何空值,我們必須手動將它從Varchar轉換爲Int。 –
他聲稱該列上強制執行了NOT NULL。 –
我正在使用Select convert(int,'Au')但仍然收到轉換失敗錯誤。 任何線索? 謝謝 –
您可以使用轉換功能:
Select convert(int,[Column1])
試試下面的代碼。在大多數情況下,它是由逗號問題引起的。
cast(replace([FIELD NAME],',','') as float)
嘗試用下面的命令,它會要求所有的值設置爲INT
選擇的情況下,當ISNUMERIC(YourColumn +」。0E0' )= 1 然後澆鑄(YourColumn作爲INT) 別的NULL 端/ * *的情況下從YourTable
是的,你在'@ v3'是正確的與我的情況是相同的條件是否有任何方式或解決方案,以便我們可以將其從varchar轉換爲int? –
@VikrantMore,更新了我的答案,包括使用'REPLACE'來刪除'CRLF'。 –