首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将VARCHAR转换为数字-没有以前的帖子回答对我有效

将VARCHAR转换为数字-没有以前的帖子回答对我有效
EN

Stack Overflow用户
提问于 2016-01-08 17:04:39
回答 1查看 518关注 0票数 0

我读过许多关于这个问题的回答,但是没有一个答案对我最近尝试CASTI a VARCHAR to NUMERIC有效

代码语言:javascript
运行
复制
Cast(Cast(a.VARCHARFIELD as NUMERIC(20,0))as INT)

我得到的错误是:

varchar值'97264634555‘的转换溢出了int列。超过最大整数值。

不幸的是,a.VARCHARFIELD包含像12345678999这样的帐户,但是它也包含文本或VARCHAR值,例如:

代码语言:javascript
运行
复制
BALL                           
TWIN                          
12345678999                       
12345679000
EN

回答 1

Stack Overflow用户

发布于 2016-01-08 17:10:28

首先,您需要确定您的值是否为数字。这里没有ANSI标准方法,但近似只是看看它是否以一个数字开头。

其次,int太小,所以我建议采用十进制格式。

所以像这样的东西会对你提供的数据起作用:

代码语言:javascript
运行
复制
select (case when VARCHARFIELD between '0' and '99999999999999'
             then cast(VARCHARFIELD as decimal(20, 0))
        end)

在任何特定的数据库中,number的验证都可以做得更好;给出的表单足以满足问题中提供的数据。

编辑:

在Server中,更准确的方法是:

代码语言:javascript
运行
复制
select (case when VARCHARFIELD NOT LIKE '%[^0-9]%'
             then cast(VARCHARFIELD as decimal(20, 0))
        end)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34682355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档