3

テーブル内または結合の結果のテーブル内のすべての列を返すことができ、日付を名前で文字列に変換できるようにしたいと考えています。

例えば

ID、説明、TO_CHAR(CHANGE_DATE,'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE FROM MY_TABLE; を選択します。

これは、これら 3 つの列だけで問題ありません。ただし、テーブルには実際にはさらに多くの列があり、他のテーブルに結合される場合があります。ワイルドカードを使用してすべての列を取得し、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

説教するより、ここで。オラクルはそれについてMSSQLより少しうるさいですが、これは私にとってはうまくいきました。

SELECT GENERAL.GOREMAL.* ,rownum ,current_date from 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

参考までに、結合がある場合、select * は特に避ける必要があります。これは、特にすべての結合フィールドに同じ情報が含まれるため、サーバーとネットワーク リソースが浪費されるためです。「select *」のようなジャンク コーディングはパフォーマンスの問題を引き起こし、システム内のすべてのクエリが適切に記述されていないと、修正が非常に困難になります。SQL Server ではオブジェクト ブラウザから列をドラッグできることは知っていますが、ORAcle に同様の機能があったとしても驚かないでしょう。

さらに、select * は、データ テーブルが変更されると、後で非常に多くのバグを作成する可能性があります。必要な特定の順序で列に名前を付けないことは、お勧めできません。

于 2009-03-12T18:18:43.450 に答える
0

あなたが書いたものはSQL Serverで完全に有効です.Oracleでも動作するはずです。元の形式で 1 ​​回、書式設定された形式で 1 ​​回、日付列を 2 回返すことに注意してください。

参考までに SELECT * の使用はおそらく避けるべきですが、それは別の質問です:-)

于 2009-03-12T16:15:09.020 に答える