我希望能够返回表中或连接结果表中的所有列,并且仍然可以按名称将日期转换为字符串。
例如
选择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。
所以我的具体问题是:是否有一种语法允许我选择所有列(通过*),并且仍然能够在这些列中的单个列上调用函数。
答案 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 *可以在数据表发生变化时创建许多很多错误。不按您想要的特定顺序命名列是不好的做法。