String or binary data would be truncated.

Hi,

Server: Msg 8152, Level 16, State 9, Line 1
String or binary data would be truncated.
The statement has been terminated.

This error happen when I tried to insert a value too long in a varchar column:
(insert "123456" in a column varchar(3))

Is there a way to tell the server to truncate the value and insert it ?
any Server Option ?
I don't mind if the value is truncate, but I have to make sure the value is inserted...

Thanks

Mary
msl22Asked:
Who is Participating?
 
arbertConnect With a Mentor Commented:
Why wouldn't you edit it on the frontend and stop it from even making it through to the server?

If you really want to (not a good idea) you can disable ANSI_WARNINGS and it will insert any way....
0
 
frodomanCommented:
How about:

INSERT LEFT("123456",3) INTO .....

This will truncate before attempting to insert.
0
 
msl22Author Commented:

The problem is that I need to use a generic method which do not know the field length...

0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
BulZeyECommented:
Are you talking for a particular table or for any table that you are insertin into??
0
 
lauszCommented:
TRY ADDING THIS LINE AT THE BEGINNING OF YOUR QUERY

SET ANSI_WARNINGS OFF
0
 
LowfatspreadCommented:
why generic?

if its generic then you should either perform validation
to ensure that the input parameters are correct (within the dbms environment)

or conform the data to the required internal db structure by querying the relevant
information schema views column/table information...

0
 
arbertCommented:
like I said above, you can change the ansi warnings, but this turns off a lot of other errors that you shouldn't overlook...
0
 
lauszCommented:
As Albert and Lowfatspread said you have to turn on this setting when you finish the query..

SET ANSI_WARNINGS OFF


...

Your query

..

SET ANSI_WARNINGS ON

0
 
mike95Commented:
You can also configure warnings off for all the connections by default by using this stored procedure:
sp_dboption 'DatabaseName', 'ANSI warnings', 'FALSE'
0
 
BryanMICommented:
I'm not sure where you are going with that, but another idea would be to query the field length from syscolumns and store the length in a variable.  You can use the length variable with the LEFT as stated above to determine where to chop the value.

I would write a function for this as it would be the easiest.
0
 
Jerryuk007Commented:
Alternative to the LEFT Command could be the command <b>substring(@yourstring,1,3)</b>...

Jerry
0
 
gerhardpretoriusCommented:
What would be the SET ANSI_WARNINGS OFF equivalent when using LINQ to SQL?
0
 
VivekrkKhareCommented:
The best way to do this you have to use import-export wizard or DTS. it will automatically manage the length given for column.
0
All Courses

From novice to tech pro — start learning today.