[英]Select data from dual table
我有如下数据:1203 1222 3201 4300这是产品数量,因此我需要在表中选择它们作为数据..我认为解决方案将使用双表..我尝试了以下代码:
Select * from { values '1203','1222','3201','4300'} as Table1
但是它不起作用!
Oracle具有TABLE
函数,该函数将varray作为输入并返回一个匿名表(匿名表示“该表没有名称”),该表只有一个名为column_value
列。
Oracle还具有函数sys.odcinumberlist()
,该函数以逗号分隔的数字列表作为输入,并返回数字varray。 (类似地,要生成一个由varchar2值组成的varray,有sys.odcivarchar2list()
。)
要输入for值并返回一个名为num
(或所需的任何其他名称)的列的结果,可以一起使用这两个函数-并在select
子句中对该列进行别名。 像这样:
select column_value as num
from table( sys.odcinumberlist( 1203, 1222, 3201, 4300 ) )
;
NUM
----
1203
1222
3201
4300
在标准 SQL中,您需要使用:
Select *
from (values ('1203','1222','3201','4300')) as Table1;
这将创建具有四个(字符)列的单行。 如果您打算返回四行 , 它将是:
Select *
from (values ('1203'),('1222'),('3201'),('4300')) as Table1
然而,Oracle 不支持这种语法。 它也不支持没有FROM子句的SELECT。
如果要在Oracle中使用4列的单行,则需要
select '1203','1222','3201','4300'
from dual;
如果要四行
select '1203'
from dual
union all
select '1222'
from dual
union all
select '3201'
from dual
union all
select '4300'
from dual;
另外: '1203'
不是 “数字”。 这是一个字符串。 在SQL中数字文字不带引号而写: 1203
是数字
您还可以使用XMLTABLE
。
select TO_NUMBER(TRIM(COLUMN_VALUE)) as numbers from XMLTABLE( '1203,1222,3201,4300');
Numbers
-------
1203
1222
3201
4300
这仅适用于数字。
编辑:最好用注释中的专家建议的to_number
来包装它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.