【问题标题】:Toad: assign a result of a query to a variable as stringToad:将查询结果作为字符串分配给变量
【发布时间】:2016-07-13 15:05:19
【问题描述】:

我正在使用 Toad,我正在尝试使用它的编辑器做一些事情。
想象一下,我们可以在 Toad 的编辑器中进行以下查询:
select firstName from Name

然后输出:
firstName
aa
bb
cc

我现在需要的是生成一个字符串变量,如下所示:
aa,bb,cc

最后将这个变量打印到输出窗口中。

我尝试了SET result = select firstName from Name等一些方法,但总是失败。

【问题讨论】:

    标签: sql select sqlplus toad


    【解决方案1】:

    听起来像是 listagg() 的工作。要将其放入变量中,您需要 SELECT INTO:

    SQL> with name(firstname) as (
         select 'aa' from dual union
         select 'bb' from dual union
         select 'cc' from dual
       )
       select listagg(firstname, ',')
         within group (order by firstname) name_list
       from name;
    
    NAME_LIST
    --------------------------------------------------
    aa,bb,cc
    
    SQL>
    

    编辑:通用以应用于您自己的表格。

    select listagg(your_column, ',')
             within group (order by your_column,) list_format
           from your_table;
    

    【讨论】:

    • 我有大约 1000 个名字...我们可以一一避免 select 吗?
    • 您只需要下面的 select listagg() 中的代码。 WITH部分是设置例子来展示它是如何工作的。它称为公用表表达式 (CTE),类似于内联临时表。不过,我必须质疑逗号分隔列表中 1000 个名称的值?真正的目标是什么?也许有更好的方法来获得你真正想要的最终结果。如果您打算将结果加载到变量中,Oracle 对 varchar2() 数据类型的大小限制为 4000。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2011-07-13
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多