Oracle 排序替换变量

发布于 2024-12-03 04:11:35 字数 176 浏览 2 评论 0原文

我需要对替换变量进行排序,以便稍后可以像这样引用它们:

WITH  
vars AS (SELECT SORT(:var1,:var2, :var3) FROM DUAL)  
SELECT least_var, greater_var, greatest_var FROM vars;

I need to sort substitution variables so I can refer to them later like this:

WITH  
vars AS (SELECT SORT(:var1,:var2, :var3) FROM DUAL)  
SELECT least_var, greater_var, greatest_var FROM vars;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮云落日 2024-12-10 04:11:35

由于您有替换变量,因此显然您有一些宿主语言。因此,一种方法是在调用 SQL 查询之前以宿主语言对三个值进行排序。

另一种方法是使用以下查询(例如与WITH子句结合使用):

select
    least(:var1, :var2, :var3) as least_var,
    case
      when :var2 < :var1 and :var1 < :var3
        or :var2 > :var1 and :var1 > :var3 then :var1
      when :var1 < :var2 and :var2 < :var3
        or :var1 > :var2 and :var2 > :var3 then :var2
      else :var3
    end as greater_var,
    greatest(:var1, :var2, :var3) as greatest_var
from dual

按照您的建议创建SORT函数不会真正起作用,因为函数无法返回充当三列的构造。如果您想使用函数,请使用其中三个:内置函数 LEAST 和 GREATEST 以及用户定义的函数 GREATER。

Since you have substitution variables, you obviously have some host language. So one approach is to order the three values in the host language before you call the SQL query.

Another approach is to use the following query (e.g. in combination with the WITH clause):

select
    least(:var1, :var2, :var3) as least_var,
    case
      when :var2 < :var1 and :var1 < :var3
        or :var2 > :var1 and :var1 > :var3 then :var1
      when :var1 < :var2 and :var2 < :var3
        or :var1 > :var2 and :var2 > :var3 then :var2
      else :var3
    end as greater_var,
    greatest(:var1, :var2, :var3) as greatest_var
from dual

Creating a SORT function as you propose won't really work as a function cannot return a construct that serves as three columns. If you want to use functions, then use three of them: the built-in functions LEAST and GREATEST as well as a user-defined one called GREATER.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文