将值提高到 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 代码出错 - 需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

codevs 1038 一元三次方程求解 NOIP2001提高组

判断一个数是否时2的整数次方

用python程序求2的0次方到63次方

SQL-Oracle 使用 LAG() 从自身更新表

在视图 SQL-ORACLE 中创建子查询

c语言计算一个数q的1次方到n次方的和,而q和n的数量级都是10的9次方,结果取模,怎么减少时间呢