小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

SQLのinsertで『STRING または BINARY データは切り詰められました。』を出さないようにするには!

SQLのinsertで、データ長を超えたデータを書き込もうとすると以下のメッセージで怒られます。

たとえば、列名がkeyidで、データ型がcharで、長さが8だったとします。
そこに9桁のデータを書き込むと以下のエラーメッセージが出力されます。

INSERT INTO [koike].[dbo].[koike01]([keyid]) VALUES('123456789')

STRING または BINARY データは切り詰められました。

そんな時は、前もってconvert関数で切り詰めるとエラー回避ができます。

INSERT INTO [koike].[dbo].[koike01]([keyid]) VALUES(convert(char(8),'123456789'))


実際は、'123456789'のところは、親言語(たとえばPerlVBなど)の変数で設定されるのを想定しています。
つまり、親言語で9桁設定されても、エラーにならず8桁がDBに格納される。
これが、良いか悪いかは、とりあえず、今回は別問題としています。


尚、Mirosoft SQL Server 2000とMirosoft SQL Server 2005で確認しています。