【问题标题】:Missing equal sign on simple update statement using oracle使用 oracle 的简单更新语句缺少等号
【发布时间】:2021-11-23 09:45:22
【问题描述】:

我正在使用 apex oracle 并在这个简单的更新语句中遇到 缺少等号 错误。有人可以指出这个查询有什么问题吗?

update product_t set qty-onhand = 11000 where productid = 28

【问题讨论】:

    标签: sql oracle oracle-apex


    【解决方案1】:

    qty-onhandcolumn qty 减号 column onhand

    您需要“转义”列名(或者只使用更好的列名,其中不带减号)

    update product_t
    set "qty-onhand" = 11000
    where productid = 28
    

    【讨论】:

    • 我想知道这是一个错误,或者实际上不应该发生,无论您是正确的方式
    • @HimanshuAhuja - 不,这不是错误,至少在 DBMS 或解析器中没有。如果您不引用/转义该列名,则它不是列名,而是算术表达式; qty-onhand 的解析方式与 qty - onhand 完全相同。如果你有SET x = y-z,你会期望得到y minus zthe column "y-z"?这就是为什么列名通常应该是字母数字和_,否则会导致问题和错误。
    • 刚刚尝试了您的解决方案@MatBailie,更新查询似乎适用于所有其他列。您能否详细说明转义列名?
    • @Noobie - 我在答案中向你展示了,在列名周围加上引号(我的答案用SET "qty-onhand" = 代替你的SET qty-onhand =;告诉解析器它不是算术表达式,它是一个带有连字符的列名。
    • @MatBailie - 非常感谢您的解释。这很有意义。在将列名放在引号中时,我还必须匹配区分大小写。现在可以了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多