1. ホーム
  2. sql

[解決済み] varchar 値の変換で int カラムがオーバーフローしました。

2022-02-01 15:33:45

質問

のある値に対して @nReservationID :

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 nReservationID=@nReservationID

なぜこのようなエラーが発生するのでしょうか?

<ブロッククオート

Msg 248, レベル 16, ステート 1, プロシージャ USP_CRE_WEB_MEMBER_AUTOGENERATEDECV, Line 136 The conversion of the varchar 値 '08041159620' が int 列をオーバーフローしました。

解決方法は?

Raviと他のユーザーに感謝します.... それでも、私は解決策を得ました

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 nReservationID=@nReservationID

0の代わりに'0'を入れるだけでよい。