varchar值的转换溢出了int列。 [英] The conversion of the varchar value overflowed an int column.
本文介绍了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 2147483647See 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 avarchar
value with aninteger
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屋!
查看全文