【问题标题】:Auto-truncate assigned string to the length of the field?将分配的字符串自动截断为字段的长度?
【发布时间】:2011-04-10 04:46:52
【问题描述】:

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

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

【问题讨论】:

    标签: sql string delphi truncate dbexpress


    【解决方案1】:

    您可以发出命令SET ANSI_WARNINGS OFF

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

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

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

    【讨论】:

    • 你有什么理由使用 Copy() 而不是 LeftStr()?
    • @Simon,不,没有理由 :)
    • LeftStr 是只在 D6 中添加的,我想,所以很多人学会了使用 Copy 并且仍然坚持使用它。
    • 还是想办法改变
    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2012-03-25
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多