varchar值的转换溢出了int列。 [英] The conversion of the varchar value overflowed an int column.

查看:124
本文介绍了varchar值的转换溢出了int列。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想选择一条记录

 ISNULL(MAX(CAST( RIGHT '  012016031800001' 15  AS   VARCHAR  15 ))), 0 )+  1  





这给出了一个错误,如



varchar值的转换

 '  012016031800001' 



溢出一个int列。



我尝试过:



  SELECT  ISNULL(MAX(CAST( RIGHT '  012016031800001' 15  AS   VARCHAR  15 ))),< span class =code-digit> 0 )+ 1 

解决方案

嗯......是的。

您可以在INT中获得的最大值是2147483647

您正在尝试添加一个:

 < span class =code-digit> 012016031800001  
2147483647

查看问题?

我不确定你为什么这样做:VARCHAR演员已经没必要了,ISNULL在这一点上也是多余的。

这可能就是你所需要的:

  SELECT  MAX(CAST( RIGHT '  012016031800001' 15  AS   BIGINT ))+ 1 





但是......如果你想提前使用它来生成唯一的ID,这是一个坏主意!


你试图使用整数值添加 varchar

试试这个



  DECLARE   @ MAXCODE  < span class =code-keyword> varchar (   15   ); 
SELECT @ MAXCODE = ISNULL(MAX(CAST( RIGHT ' 012016031800001' 15 AS VARCHAR 15 ))), 0 )+ ' 1'
PRINT @ MAXCODE
print len( @ maxcode





  DECLARE   @ MAXCODE   varchar    16   ); 
SELECT @ MAXCODE = ISNULL(MAX(CAST( RIGHT ' 012016031800001' 15 AS VARCHAR 15 ))), 0 )+ ' 1'
PRINT @ MAXCODE
print len( @ maxcode


  CONVERT  BIGINT ,ISNULL(MAX(CAST( RIGHT '  022016031800001' 15  A. S   VARCHAR  15 ))), 0 ))+ 1 


I want to select a record

ISNULL( MAX(CAST(RIGHT('012016031800001',15) AS VARCHAR(15))), 0) + 1



this gives an error like

The conversion of the varchar value

'012016031800001'


overflowed an int column.

What I have tried:

SELECT ISNULL( MAX(CAST(RIGHT('012016031800001',15) AS VARCHAR(15))), 0)+1

解决方案

Well...yes.
The max value you can get in an INT is 2147483647
And you are trying to add one to:

012016031800001
     2147483647

See the problem?
I'm not exactly sure why you are doing that: the VARCHAR cast is already unnecessary, and the ISNULL is also pretty redundant by that point.
This may be what you need:

SELECT MAX(CAST(RIGHT('012016031800001',15) AS BIGINT))+1



But...If you are trying to use this to generate unique IDs in advance, that's a bad idea!


you are trying to add a varchar value with an integer value
try this

DECLARE @MAXCODE varchar(15);
SELECT  @MAXCODE=ISNULL( MAX(CAST(RIGHT('012016031800001',15) AS VARCHAR(15))), 0) +'1'
PRINT @MAXCODE
print len( @maxcode)



DECLARE @MAXCODE varchar(16);
SELECT  @MAXCODE=ISNULL( MAX(CAST(RIGHT('012016031800001',15) AS VARCHAR(15))), 0) +'1'
PRINT @MAXCODE
print len( @maxcode)


CONVERT(BIGINT, ISNULL( MAX(CAST(RIGHT('022016031800001',15) AS VARCHAR(15))), 0))+1


这篇关于varchar值的转换溢出了int列。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆