将值提高到 n 次方时 SQL-Oracle 代码出错 - 需要帮助
Posted
技术标签:
【中文标题】将值提高到 n 次方时 SQL-Oracle 代码出错 - 需要帮助【英文标题】:Error in SQL-Oracle Code when raising value to the nth power - Need assistance 【发布时间】:2013-07-02 14:26:15 【问题描述】:我正在 Oracle 中运行 SQL 代码,需要帮助修改以下“更新”脚本。下面的脚本给了我错误“缺少等号”,因为代码的最后一行中的“^”旨在将Table-B.ValueY
值设为Table-A.ValueZ
幂。我尝试将最后一行更改为 Power (x,y) 公式,但这给了我“%s:无效标识符”错误。我什至将代码完全更改为 CREATE TABLE,但这似乎只是陷入了循环并且永远不会完成。
非常感谢任何帮助。
原码:
UPDATE Table-A
SET Column-X = 0
WHERE
TABLE-A.mid = TABLE-B.mid AND
TABLE-A.tdlinx = TABLE-B.tdlinx AND
TABLE-B.ValueY ^ TABLE-A.ValueZ > 0.1;
【问题讨论】:
@Randy 的回答是正确的。您得到“缺少等号”,因为在 Oracle 中指定“不等于”的一种(非常模糊的)方法是^=
,如 WHERE value ^= 3
。
【参考方案1】:
有一个POWER功能
SELECT POWER(10,2) FROM DUAL;
你的应该看起来像这样:
POWER( TABLE-B.ValueY, TABLE-A.ValueZ ) > 0.1
【讨论】:
感谢您的反馈,但不幸的是,我已经尝试了您概述的 POWER 功能,并收到与该代码行相关的“%s:无效标识符”错误消息。 除了 where 子句之外,您是否在实际语句中的任何位置引用表 B? 我建议将 POWER 替换为像 1 这样的静态数字,然后您可以专注于语法的其余部分。当它工作时,更换电源部分。 不,除了 WHERE 子句之外,我不会在脚本中的其他地方引用表 B。我能够让 Create Table 与修改后的 POWER(X,Y) 语句一起使用,其中我使用硬键 3 作为指数而不是变量。只需要让它与有问题的变量一起工作。由于 UPDATE 脚本不起作用,因此采取 3 步而不是 1 步就很痛苦。以上是关于将值提高到 n 次方时 SQL-Oracle 代码出错 - 需要帮助的主要内容,如果未能解决你的问题,请参考以下文章