2013-03-08 3 views
9

Pour une valeur de @nReservationID:La conversion de la valeur varchar débordait une colonne int

SELECT @phoneNumber= 
    CASE 
    WHEN ISNULL(rdg2.nPhoneNumber ,0) = 0 THEN ISNULL(rdg2.nMobileNumber, 0) 
    ELSE ISNULL(rdg2.nPhoneNumber ,0) 
    END 
from tblReservation_Details_Guest rdg2 
where [email protected] 

Pourquoi ai-je cette erreur?

Msg 248, Niveau 16, État 1, Procédure USP_CRE_WEB_MEMBER_AUTOGENERATEDECV, Ligne 136 La conversion de la valeur varchar '08041159620' débordait une colonne int.

Répondre

5

Merci Ravi et d'autres utilisateurs .... Néanmoins j'ai obtenu la solution

SELECT @phoneNumber= 
CASE 
    WHEN ISNULL(rdg2.nPhoneNumber ,'0') in ('0','-',NULL) 
THEN ISNULL(rdg2.nMobileNumber, '0') 
    WHEN ISNULL(rdg2.nMobileNumber, '0') in ('0','-',NULL) 
THEN '0' 
    ELSE ISNULL(rdg2.nPhoneNumber ,'0') 
END 
FROM tblReservation_Details_Guest rdg2 
WHERE [email protected] 

juste besoin de mettre '0' au lieu de 0

+0

J'ai également rencontré ce problème. Sans les guillemets simples, vous comparez la valeur entière, mais avec les guillemets simples, nous comparons les guillemets. – ConfusedDeer

+0

Quel est le type de @phoneNumber? – Tito

+3

Ah, le bon vieux représentant un numéro de téléphone comme un nombre entier de voyage: Par intérêt, puis-je demander pourquoi vous utiliseriez 0 comme numéro de téléphone? Je demande parce que 0 n'est pas un nombre valide. Pourquoi ne pas le laisser comme NULL? Est-ce que 0 signifie n'importe quoi? –

7
Declare @phoneNumber int 

select @phoneNumber=Isnull('08041159620',0); 

Give erreur:

The conversion of the varchar value '8041159620' overflowed an int column.: select cast('8041159620' as int) 

AS

entier est défini comme suit:

Entier (numéro entier) données de -2^31 (-2147483648) à 2^31 - 1 (2 147 483 647). La taille de stockage est de 4 octets. Le synonyme SQL-92 pour int est entier.

Solution

Declare @phoneNumber bigint 

Reference

+0

J'ai essayé avec BIGINT, VARCHAR (100), NVARCHAR (100), TEXT tout, mais rien n'a fonctionné aussi bien. Par réponse karne k liye sukria :) –

Questions connexes