SQL Server 2005 を使用しており、テーブル内のすべての行を選択するが、特定の型の列のみを選択する select ステートメントを作成する必要があります。私の場合、xml、text、ntext、image、または非バイナリ CLR ユーザー定義型の列を除くすべての列が必要です。
それが問題です。なぜ私がこれを行っているのか知りたい場合は、読み進めてください。EXCEPT
この質問で概説されているものと同様に、2 つのデータベースの各テーブルの違いを識別するために使用しています: SQL compare data from two tables。コメントで提案された理由がわからないINTERSECT
ので、代わりに UNION ALL を使用しています。
私が使用しているコードは次のとおりです。
(select *, 'table a first' as where_missing from A EXCEPT select *,'table a first' as where_missing from B)
union all
(select *,'table b first' as where_missing from B EXCEPT select *, 'table b first' as where_missing from A)
一部のテーブルには、 では機能しない列タイプが含まれていますEXCEPT
。したがって、それらの列を選択したくありません。この情報は information_schema.columns から取得できますが、上記の例で「*」の代わりにそれを使用できる良い方法はありますか?
ありがとう!