sql - SQL oracle - 如何从列中获取最大值,添加一个,格式化它并与更多值连接
问题描述
我目前正在尝试创建一个查询,该查询必须从列中获取最大值,添加一个(+1)并在左侧使用 N 个零对其进行格式化,直到九个位置。
我已经尝试了很多在 H2 数据库中有效但在 Oracle 中不一样的查询
INSERT INTO XXX.YYY(X,Y,Z)
VALUES
(CONCAT(:X, :Y, (LPAD((SELECT nvl(max(Z),0) + 1 FROM XXX.YYY),9,'0'))),
(LPAD((SELECT nvl(max(Z),0) + 1 FROM XXX.YYY),9,'0')),
:Z)
这向我抛出了以下错误:
java.sql.SQLSyntaxErrorException:ORA-00909:参数数量无效
解决方案
这条线有问题。
(CONCAT(:X, :Y, (LPAD((SELECT nvl(max(Z),0) + 1 FROM XXX.YYY),9,'0'))),
Oracle 不允许超过 2 个参数。使用管道代替 Concat 运算符 ( ||
)
(:X || :Y || (LPAD((SELECT nvl(max(Z),0) + 1 FROM XXX.YYY),9,'0')),
此外,您可以使用以下方法更好地查询INSERT INTO .. SELECT
:
INSERT INTO XXX.YYY(X,Y,Z)
select :X || :Y || (LPAD(nvl(max(Z),0) + 1 ,9,'0')),
(LPAD(nvl(max(Z),0) + 1 ,9,'0')),
:Z from XXX.YYY;
推荐阅读
- r - 在R中以外积方式将函数应用于矩阵
- javascript - 将数据存储在本地存储中并使用 Java Script 检索和显示
- python - 我只是做了一个简单的猜谜游戏,但我的“剩余猜测”变量不起作用
- javascript - 速率高于 60 fps 的 requestAnimationFrame
- python - 初始化后如何更改画布的主人?
- sql - 为什么在 sqlplus 中无法识别重音符号
- python-3.x - 将列表作为参数提供给 Scrapy 刮板
- reactjs - 在 React 中从 API 获取数据的问题
- python - 如何从多个线程中捕获异常?
- bash - Wget 在标准输出时给出正确结果,在保存到文件时给出错误结果