Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 此格式中id.in(1:6:3)的列总和_Mysql_Sql_Plsql_Oracle Apex 5.1 - Fatal编程技术网

Mysql 此格式中id.in(1:6:3)的列总和

Mysql 此格式中id.in(1:6:3)的列总和,mysql,sql,plsql,oracle-apex-5.1,Mysql,Sql,Plsql,Oracle Apex 5.1,我的Ui返回id的格式为1:6:3,因此我希望对该id对应的值求和。例如,如果id返回=1:6:3 然后输出将=100+50+140=290 从ID位于1,6,3中的表中选择SUMvalue如何?花了一些时间来找出问题所在。我想我现在明白了-它是关于Apex的,它的功能是允许多个选择,例如,选择列表或穿梭项目。执行此操作时,这些多个值将表示为冒号分隔的字符串 如果我们假设它是一个select列表项,那么它需要两个值:display和return。结果字符串包含这些返回值,这意味着您选择了几个返回

我的Ui返回id的格式为1:6:3,因此我希望对该id对应的值求和。例如,如果id返回=1:6:3 然后输出将=100+50+140=290

从ID位于1,6,3中的表中选择SUMvalue如何?

花了一些时间来找出问题所在。我想我现在明白了-它是关于Apex的,它的功能是允许多个选择,例如,选择列表或穿梭项目。执行此操作时,这些多个值将表示为冒号分隔的字符串

如果我们假设它是一个select列表项,那么它需要两个值:display和return。结果字符串包含这些返回值,这意味着您选择了几个返回值为1、6和3的项,并且如上所述,这些项存储为1:6:3

为了处理它们(在您的示例中是表中的求和值),您必须首先将该字符串解析为行,并将结果与您发布其图像的真实表连接起来。让我们称之为测试表;这是:

SQL> create table test (id number, value number, name varchar2(2));

Table created.

SQL> insert into test
  2    select 1, 100, 'a' from dual union
  3    select 2, 110, 'b' from dual union
  4    select 3, 140, 'c' from dual union
  5    select 4, 203, 'd' from dual union
  6    select 5, 230, 'e' from dual union
  7    select 6, 50 , 'f' from dual;

6 rows created.
在Apex中,您可以按如下方式执行:P1_项是包含“1:6:3”字符串的第1页项:

select sum(t.value) result
from test t join (select regexp_substr(:P1_ITEM, '[^:]+', 1, level) id
                  from dual
                  connect by level <= regexp_count(:P1_ITEM, ':') + 1
                 ) a on a.id = t.id;
为了在SQL*Plus中进行演示,结果如下:

SQL> select sum(t.value) result
  2  from test t join (select regexp_substr('&&P1_ITEM', '[^:]+', 1, level) id
  3                    from dual
  4                    connect by level <= regexp_count('&&P1_ITEM', ':') + 1
  5                   ) a on a.id = t.id;
Enter value for p1_item: 1:6:3

    RESULT
----------
       290

SQL>

您使用的是MySQL还是Oracle plsql?您的问题没有任何意义是预期结果100+50+140=290?我使用的是sql.jarlh是290..我想要相同的是1:6:3是您的字符串?alpesh它在数字中sql不理解:在查询中的分隔值,它期望是逗号,仅分隔值,您必须将冒号分隔的值转换为逗号分隔的值1,6,3,然后可以尝试