0

1つの列を変換し、明示的に名前を付けずに他のすべての列を参照できるようにする方法はありますか?

通常、私はこれを行います:

SELECT
      ,[Id]
      ,[Name]
      ,CONVERT(VARCHAR(10),[CreateDate], 104) as [CreateDate] 
  FROM Customers

完璧な世界で私ができることは次のとおりです。

SELECT
      *
      ,CONVERT(VARCHAR(10),[CreateDate], 104) as [CreateDate] 
  FROM Customers

ここで、*は、クエリで明示的に指定されていないすべての列を意味します。

これを可能にするキーワードはありますか、それとも他の方法がありますか?クエリで実行可能である必要があることに注意してください。テーブルを変更したり、ビューやSPなどを作成したりすることはできません。

4

2 に答える 2

2

sys.columnsクエリを提供するリストに基づいて動的SQLを構築する場合を除いて、「これを除くすべての列」をプログラムで表現する方法はありません(クエリから参照列のリストを動的に導出することは非常に困難です)。 、特に結合、where句などを導入する場合)。

しかし、すべてを入力せずにこれを行うには、かなり簡単な方法があります。オブジェクトエクスプローラーでテーブルを展開し、[列]ノードをクエリエディターウィンドウにドラッグするだけです。次に、リストからCreateDate列を削除します。

于 2012-06-04T15:44:05.597 に答える
0

フィールドの長いリストを入力しないようにするために私がしたいのは、エディターでテーブル名を選択してから、alt-f1を押すことです。これは、「sp_helptable」と入力するのと同じことです。そのテーブルのすべての列名を含む結果セットが表示されます。そのリストをエディターにコピーし、コンマを追加します。

エディターで検索と置換を使用して、すべての行の最後にコンマを追加する簡単な方法:

  1. 列名のある行のみを選択します。
  2. 「使用」にチェックを入れ、ドロップダウンから「正規表現」を選択します。
  3. [検索する文字列]に$と入力します(ドル記号は行の終わりを意味します)
  4. 「置換」タイプでは、

これにより、選択した各行の末尾にコンマが追加されます。

別の方法は、オブジェクトエクスプローラーでテーブルを右クリックし、[トップ1000を選択]オプションをクリックして、別のテキストエディターウィンドウでスクリプトを作成することです。

于 2012-06-04T15:55:56.847 に答える