如何在SQL Server 2008中将Varchar转换为Int?

Vik*_*ore 15 sql sql-server-2005 sql-server-2008

如何在sql server 2008中将Varchar转换为Int.

当我试图运行它时我有以下代码不允许我将Varchar转换为Int.

Select Cast([Column1] as INT) 
Run Code Online (Sandbox Code Playgroud)

Column1是Varchar(21)NOT NULL类型,我想将它转换为Int.实际上我正在尝试将Column1插入另一个具有Field为INT的表中.有人可以帮我转换一下吗?

Jef*_*ata 19

空格不会是一个问题cast,但是TAB,像空格一样的字符CRLF将显示为空格,不会被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
Run Code Online (Sandbox Code Playgroud)

检查输入中是否有这些字符,如果找到它们,请使用REPLACE清理数据.


根据您的评论,您可以将其REPLACE作为您的一部分cast:

select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)
Run Code Online (Sandbox Code Playgroud)

如果这一点是要经常发生的事情,这将是更好地清理数据和修改表填充去除的方式CRLF进入前.


Ali*_*uli 10

你可以使用转换功能:

Select convert(int,[Column1])
Run Code Online (Sandbox Code Playgroud)