Sql 从“双”选项中选择时,是否可以指定Oracle 8i伪列的数据类型
在Oracle中,可以生成伪列和伪表,但不确定这是否是一个官方术语:Sql 从“双”选项中选择时,是否可以指定Oracle 8i伪列的数据类型,sql,oracle,sqldatatypes,oracle8i,Sql,Oracle,Sqldatatypes,Oracle8i,在Oracle中,可以生成伪列和伪表,但不确定这是否是一个官方术语: (SELECT 'abc' AS pseudo_col_1, 123 AS pseudo_col_2 FROM dual) pseudo_table 在指定pseudo_col_1和/或pseudo_col_2的数据类型时,我也希望这样做。 以下内容似乎适用于Oracle 11g,其中pseudo_col_2被指定为CLOB数据类型: (SELECT 'abc' AS pseudo_col_1, TO_CLOB(123)
(SELECT 'abc' AS pseudo_col_1, 123 AS pseudo_col_2 FROM dual) pseudo_table
在指定pseudo_col_1和/或pseudo_col_2的数据类型时,我也希望这样做。
以下内容似乎适用于Oracle 11g,其中pseudo_col_2被指定为CLOB数据类型:
(SELECT 'abc' AS pseudo_col_1, TO_CLOB(123) AS pseudo_col_2 FROM dual) pseudo_table
但是,我需要在Oracle8i上实现相同的结果,它没有tou_CLOB函数
免责声明:我知道8i已经过时,无需对此进行评论,因为很遗憾,我对此没有任何控制权。您可以转换为您想要的类型:
SELECT cast('abc' as varchar2(255)) AS pseudo_col_1,
cast(123 as decimal(10, 2)) AS pseudo_col_2
FROM dual;
但是你不能投CLOB。@AlexPoole。当我回答时,它没有指定CLOB。有意思。抱歉,没有在问题标题中指定CLOB,但是在问题正文中指定了CLOB。无论如何,谢谢你的回答。CAST可能是以后版本中的一个解决方案。我不确定CLOB支持在8年是否像现在这样成熟。为什么需要显式更改数据类型?实际上,我并不想更改数据类型,而是在生成伪列时指定数据类型,类似于在C和其他语言中显式声明变量的类型。但是,进一步研究文档时,双表包含一个VARCHAR2列。所以我猜我基于DUAL创建的任何伪列都将保持为VARCHAR2类型,除非,如您所述,我明确地更改了数据类型,这显然是我使用TO_CLOB所做的。有没有办法从头开始生成伪表/伪列,或者来自DUAL以外的表,该表将包含DUAL的VARCHAR2以外的数据类型?DUAL表中列的数据类型对查询结果并不重要。您可以选择1作为双精度输入,并获得一个数字列。如果你能解释一下为什么要这样做,也许会有所帮助,尽管戈登·林诺夫下面的答案可能有用。