如何将SQL Server 2008中的Varchar转换为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'。 –