自动截断指定的字符串到字段的长度?

时间:2011-04-10 04:46:53

标签: sql string delphi truncate dbexpress

将dbexpress驱动程序从10迁移到11时遇到了问题。

我有以下代码在SQL Server中执行更新语句:

sql.add('UPDATE mytable SET myfield=:AFIELD');
ParamByName('AFIELD').AsString := 'Some random string that is too long for the field';
Open;

它将引发SQL错误异常并停止执行。 字符串或二进制数据将被截断

这是由myfield中的字符串长于表字段长度引起的,myfield是Varchar(10)

以前,代码工作正常,字符串进入字段会自动截断为10个字符。

我想知道您是否可以提供有关配置连接以使自动截断工作的任何提示。或者任何解决方法。谢谢你!~~~

1 个答案:

答案 0 :(得分:1)

您可以发出命令SET ANSI_WARNINGS OFF

但这并不值得推荐,因为它有功能性 在SQL Server中,需要启用ANSI_WARNINGS。

所以最好自己截断数据,即

ParamByName('AFIELD').AsString := Copy(VeryLongString, 1, 10);