繁体   English   中英

从双表中选择数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM