代码之家  ›  专栏  ›  技术社区  ›  Aksh Akshay

使用查询更新Sql中的记录时。。。在数据库中存储时忽略0(零)

  •  1
  • Aksh Akshay  · 技术社区  · 7 年前

    0921 那么作为部门 0(零) 正在被接受并且只有 921 这给了我错误的输出和错误的结果。

    $ write SQL "set feedback on"
    $ write SQL "spool  Manager:[Aksh]akshay4.log"
    $ write SQL "define IEMP_ID = '" + Ref + "';"
    $ write SQL "define IYEAR = '" + File + "';"
    $ write SQL "define IDEPT = '" + DEPT + "';"
    $ write SQL "define IACC = '" + ACC + "';"
    $ write SQL "Update EMPLOYEE set DEPT=&IDEPT where EMP_ID=&IEMP_ID and year=&IYEAR and ACC=&ACC;
    $ write SQL "commit;"
    $ write SQL "exit;"
    $ close SQL
    

    当我运行上述代码时,我可以看到以下输出:

    old   1: Update employee set DEPT=&IDEPT where EMP_ID=&EMP_ID and year=&IYEAR and ACC=&ACC;
    new   1: Update employee set DEPT=02150 where EMP_ID=14447 and year=2017 and ACC=1
    

    但是当我运行代码后检查数据库时。。我只能看到 2150 对此有什么建议吗??

    2 回复  |  直到 7 年前
        1
  •  3
  •   Magisch Red Devil    7 年前

    首先,您的列类型 DEPT 不能是整数-整数不与前面的零一起存储。

    02150 ,数字变为 2150 因为在整数的上下文中,前面的0是没有意义的。

    为了解决这个问题,您应该使用 VARCHAR 键入数据类型

    综上所述:

    1. 验证您的 列正在使用 瓦查尔
    2. 更改SQL查询以反映它是一个字符串,而不是存储的数字。

    例子:

    Update employee set DEPT='02150' where EMP_ID=14447 and year=2017 and ACC=1

        2
  •  0
  •   Hein    7 年前

    跳过中间人,成为“定义者”。

    "''numeric_variable'"
    

    建议:

    $ write SQL "set feedback on"
    $ write SQL "spool  Manager:[Aksh]akshay4.log"
    $ write SQL "Update EMPLOYEE set DEPT='" + dept 
        + "' where EMP_ID='" + ref
        + "' and YEAR='" + file 
        + "' and ACC='" + acc
        + "';"
    $ write SQL "commit;" 
    $ write SQL "exit;"