自动截断分配的字符串到字段的长度?

发布于 2024-10-31 16:02:26 字数 462 浏览 6 评论 0原文

我在将 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 个字符。

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

I met a problem when migrating dbexpress driver from 10 to 11.

I have the following codes to execute an update statement in SQL Server:

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

It will raise an SQL Error Exception and stop the execution.
string or binary data would be truncated

This is caused by the string in myfield been longer then the tables field length, myfield is Varchar(10)

Previously, the codes worked fine and the string goes into the field is truncated to 10 characters automatically.

I was wondering if you can provide any hints about configuring the connection to make the auto-truncation work. Or any work-arounds. Thanks a heap!~~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鸠书 2024-11-07 16:02:26

您可以发出命令SET ANSI_WARNINGS OFF

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

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

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

You can issue the command SET ANSI_WARNINGS OFF.

But this is not really recommendable, as there are functionality
in SQL Server that requires ANSI_WARNINGS to be on.

So it's better to truncate the data yourself, i.e.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文