Sql 如何在选择列表中将列值用作列名或计算符号
我尝试将SQLITe上的查询转换为ORACLE的18C版本。 但有一个问题 我想要的是“在选择列表中使用列(字符串)值作为列名或计算符号”。 (以SQLITE为例) 带列的表Sql 如何在选择列表中将列值用作列名或计算符号,sql,oracle,Sql,Oracle,我尝试将SQLITe上的查询转换为ORACLE的18C版本。 但有一个问题 我想要的是“在选择列表中使用列(字符串)值作为列名或计算符号”。 (以SQLITE为例) 带列的表 q1编号 q2编号 `calc varchar 每个列的样本记录的值为 0.1、0.2、q1+q2 然后当我使用下面的查询时 select q1, q2, (calc) * 1 from table; 结果集是 0.1,0.2,0.3 在SQLITE中,列的字符串值可以用作列名和计算符号 我试图找到与oracle
q1编号
q2编号
- `calc varchar
0.1、0.2、q1+q2
然后当我使用下面的查询时
select q1, q2, (calc) * 1 from table;
结果集是
0.1,0.2,0.3
在SQLITE中,列的字符串值可以用作列名和计算符号
我试图找到与oracle类似的方法,但失败了。
有没有不使用PL/SQL或动态查询的方法?最简单的选择是
select q1, q2,
q1 + q2 as result
from some_table;
或者,创建一个函数(如果您坚持),然后使用它:
SQL> create or replace function calc (par_1 in number, par_2 in number)
2 return number
3 is
4 begin
5 return par_1 + par_2;
6 end;
7 /
Function created.
SQL> with test (q1, q2) as
2 (select 1, 8 from dual union all
3 select -4, 24 from dual
4 )
5 select q1, q2, calc(q1, q2) result
6 from test;
Q1 Q2 RESULT
---------- ---------- ----------
1 8 9
-4 24 20
SQL>
最简单的选择是
select q1, q2,
q1 + q2 as result
from some_table;
或者,创建一个函数(如果您坚持),然后使用它:
SQL> create or replace function calc (par_1 in number, par_2 in number)
2 return number
3 is
4 begin
5 return par_1 + par_2;
6 end;
7 /
Function created.
SQL> with test (q1, q2) as
2 (select 1, 8 from dual union all
3 select -4, 24 from dual
4 )
5 select q1, q2, calc(q1, q2) result
6 from test;
Q1 Q2 RESULT
---------- ---------- ----------
1 8 9
-4 24 20
SQL>
您可以在SQL中使用XMLquery实现这一点,如下所示 更新1:-对于q2对q1的模运算,使用
q1 mod q2
。
对于q1到电源q2,请使用math:pow(q1,q2)
。有关更多Xquery函数的信息,请参考
您可以在SQL中使用XMLquery实现这一点,如下所示 更新1:-对于q2对q1的模运算,使用
q1 mod q2
。
对于q1到电源q2,请使用math:pow(q1,q2)
。有关更多Xquery函数的信息,请参考
“不使用PL/SQL或动态查询”-不感谢您的编辑。这是我的第一个糟糕的问题。最后决定使用pl/sql。“不使用pl/sql或动态查询”-不感谢您的编辑。这是我第一个糟糕的问题。最后决定使用pl/sql。谢谢你的建议。但这和我想要的有些不同。在Calc列中,有许多值,如'q1/q2','q1*2+q2','q1*q2'等,我使用三列简化了问题。。。但实际上有q1~q9数字型列和Calc列。我尝试使用onequery来表示,而不用硬编码calc列的所有大小写,也不用使用函数pl/sql。你能进一步帮助我吗?我不知道SQLITE,也不知道CALC列是做什么的。但是,根据你所描述的,我不认为存在类似的情况——你必须编写自己的函数并进行所有这些计算。谢谢你的建议。但这和我想要的有些不同。在Calc列中,有许多值,如'q1/q2','q1*2+q2','q1*q2'等,我使用三列简化了问题。。。但实际上有q1~q9数字型列和Calc列。我尝试使用onequery来表示,而不用硬编码calc列的所有大小写,也不用使用函数pl/sql。你能进一步帮助我吗?我不知道SQLITE,也不知道CALC列是做什么的。但是,根据你所描述的,我不认为存在类似的情况——你必须编写自己的函数并进行所有这些计算。非常感谢。我会试试的。非常感谢你。我试试看。