从表中选择*并仍在单个命名列上执行某些功能

时间:2009-03-12 16:09:27

标签: sql select plsql wildcard to-char

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

例如

选择ID,DESCRIPTION,TO_CHAR(CHANGE_DATE,'YYYY-MM-DD HH24:MI:SS')AS FORMATED_DATE MY_TABLE;

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

像: SELECT *,(CHANGE_DATE,'YYYY-MM-DD HH24:MI:SS')FORMATED_DATE MY_TABLE;

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

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

5 个答案:

答案 0 :(得分:4)

你最接近的是:

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

答案 1 :(得分:2)

而不是在这里讲课。甲骨文比MSSQL有点麻烦,但这对我有用。

选择  GENERAL.GOREMAL。* ,ROWNUM ,当前的日期 来自GENERAL.GOREMAL

答案 2 :(得分:1)

以下是可以接受的:

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

或者

SELECT compute_foo() as aColumn, *

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

答案 3 :(得分:0)

在SQL Server中,您所写的内容完全有效,我认为它也适用于Oracle。请注意,您将以原始形式返回日期列两次,并以Formated形式返回一次。

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

答案 4 :(得分:0)

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

另外,select *可以在数据表发生变化时创建许多很多错误。不按您想要的特定顺序命名列是不好的做法。