加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在sql server 2008中如何将Varchar转换成Int?

发布时间:2020-12-12 06:24:28 所属栏目:MsSql教程 来源:网络整理
导读:在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.

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

Select Cast([Column1] as INT)

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

解决方法

空格不会是转换的问题,但是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作为演员的一部分:

select cast(replace(replace(@v3,char(13),''),char(10),'') as int)

如果这是经常发生的情况,最好是清理数据并修改表的填充方式,以便在输入CR和LF之前删除CR和LF.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读