वर्चर मान का रूपांतरण एक इंट कॉलम को ओवरफ्लो कर देता है।


मैं एक रिकॉर्ड चुनना चाहता हूं

एसक्यूएल
ISNULL( MAX(CAST(RIGHT('012016031800001',15) AS VARCHAR(15))), 0) + 1

यह एक त्रुटि देता है जैसे

वर्चर मान का रूपांतरण

जावास्क्रिप्ट
'012016031800001'

एक पूर्णांक कॉलम ओवरफ्लो हो गया।

मैंने क्या प्रयास किया है:

एसक्यूएल
SELECT ISNULL( MAX(CAST(RIGHT('012016031800001',15) AS VARCHAR(15))), 0)+1

समाधान 2

पूर्ण रूप से हाँ।
INT में आप अधिकतम मान 2147483647 प्राप्त कर सकते हैं
और आप इसमें एक जोड़ने का प्रयास कर रहे हैं:

सी#
012016031800001
     2147483647

समस्या देखें?
मुझे बिल्कुल यकीन नहीं है कि आप ऐसा क्यों कर रहे हैं: VARCHAR कास्ट पहले से ही अनावश्यक है, और ISNULL भी उस बिंदु से काफी अनावश्यक है।
यह वही हो सकता है जिसकी आपको आवश्यकता है:

एसक्यूएल
SELECT MAX(CAST(RIGHT('012016031800001',15) AS BIGINT))+1

लेकिन…यदि आप पहले से अद्वितीय आईडी बनाने के लिए इसका उपयोग करने का प्रयास कर रहे हैं, तो यह एक बुरा विचार है!

समाधान 3

आप एक जोड़ने का प्रयास कर रहे हैं varchar एक के साथ मूल्य integer कीमत
ये कोशिश करें

एसक्यूएल
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)

समाधान 6

https://mostbet-casino.mystrikingly.com/

समाधान 1

एसक्यूएल
CONVERT(BIGINT, ISNULL( MAX(CAST(RIGHT('022016031800001',15) AS VARCHAR(15))), 0))+1

समाधान 5

का अधिकतम डेटा मान है

2147483648

इंट का अधिकतम मूल्य कैसे प्राप्त करें।

Select Power(cast(2 as varchar),(32) -1) as 'int max range'  from sys.types Where name = 'Int' 

आप कर सकते हैं बिगिनट के बजाय int यहाँ

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

コメント

タイトルとURLをコピーしました