3

我希望能够返回表中或连接的结果表中的所有列,并且仍然能够按名称将日期转换为字符串。

例如

从 MY_TABLE 中选择 ID、描述、TO_CHAR(CHANGE_DATE,'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE;

这对这三列来说一切都很好。但是,该表实际上将有更多列,并且可能会连接到其他表。我希望能够使用通配符来获取所有列,并且仍然能够执行 TO_CHAR 转换。

类似于:SELECT *, (CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE FROM MY_TABLE;

正如您从 TO_CHAR 中猜到的那样,我使用的是 Oracle,所以我使用的是 PLSQL。

所以我的具体问题是:是否有一种语法允许我选择所有列(通过*)并且仍然能够在这些列中的单个列上调用函数。

4

5 回答 5

4

您可以做的最接近的是:

SELECT 
     MY_TABLE.*, 
     (CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE 
FROM MY_TABLE;
于 2009-03-12T16:16:09.470 回答
2

与其教训你,不如在这里。Oracle 在这方面比 MSSQL 更麻烦一些,但这对我有用。

SELECT GENERAL.GOREMAL.* ,rownum ,current_date 从 GENERAL.GOREMAL

于 2012-10-14T00:52:39.840 回答
1

以下是可以接受的:

SELECT T1.*, T2.*, x + y as some_Z

也许

SELECT compute_foo() as aColumn, *

最后一个将始终将您的特殊列保持在同一个位置 - 在开始时 - 无论通配符带来多少列。

于 2009-03-12T16:17:08.843 回答
0

在 SQL Server 中,您编写的内容完全有效,我认为它也应该在 Oracle 中工作。请注意,您将返回日期列两次,一次以原始形式返回,一次以格式化形式返回。

仅供参考使用 SELECT * 可能应该避免,但这是另一个问题:-)

于 2009-03-12T16:15:09.020 回答
0

仅供参考,如果您有联接,则特别要避免选择 *,因为它会浪费服务器和网络资源,尤其是因为所有联接字段都具有相同的信息。像“select *”这样的垃圾编码会产生性能问题,当系统中的每个查询都写得不好时,这些问题就很难修复。我知道在 SQL Server 中,您可以从对象浏览器中拖动列,如果 ORacle 有类似的东西,我不会感到惊讶。

此外,随着数据表的变化,select * 会产生很多很多以后的 bug。不按您想要的特定顺序命名列是不好的做法。

于 2009-03-12T18:18:43.450 回答