代码之家  ›  专栏  ›  技术社区  ›  J-16 SDiZ

在Derby中将VARCHAR自动截断为特定长度

  •  2
  • J-16 SDiZ  · 技术社区  · 15 年前

    如何在Derby中使用SQL自动将VARCHAR截断为表字段长度?

    具体而言:

    CREATE TABLE A ( B VARCHAR(2) );
    INSERT INTO A B VALUES ('1234');
    

    将引发SQLException:

    A truncation error was encountered trying to shrink VARCHAR '123' to length 2.
    

    3 回复  |  直到 15 年前
        1
  •  3
  •   Adeel Ansari    15 年前

    不,你应该在检查完元数据后把它切掉。或者,如果您不想每次都检查元数据,那么您必须保持代码和数据库同步。但这没什么大不了的,这是验证器的惯常做法。

        2
  •  0
  •   Stuart    15 年前

    可以在插入varchar之前对其进行修剪。

    我不熟悉Derby,但在MSSQL中我做了完全相同的事情,使用trim来避免截断错误(仅在不需要完整数据的情况下),增加varchar的长度更可取

        3
  •  0
  •   tashuhka    9 年前

    你可以用 SUBSTR

    CREATE TABLE A ( B VARCHAR(2) );
    INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));
    

    如果您使用准备好的声明:

    INSERT INTO A B VALUES (SUBSTR(?, 1, 2));