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'のところは、親言語(たとえばPerlやVBなど)の変数で設定されるのを想定しています。
つまり、親言語で9桁設定されても、エラーにならず8桁がDBに格納される。
これが、良いか悪いかは、とりあえず、今回は別問題としています。
尚、Mirosoft SQL Server 2000とMirosoft SQL Server 2005で確認しています。