1

指定されたテーブルの列名を取得しようとしています。そこで、次のようなクエリを書きました。

  SELECT   sc.Name
   FROM     Asdim.dbo.sysobjects so
            INNER JOIN Asdim.dbo.syscolumns sc ON so.id = sc.id
            INNER JOIN Asdim.dbo.systypes st ON sc.xtype = st.xusertype
   WHERE    so.Name = 'Admin'

問題は、'Admin' という名前の 2 つのテーブルがありますが、スキーマが異なることです。したがって、このクエリを実行すると:

SELECT * FROM Asdim.dbo.sysobjects
WHERE name LIKE 'Admin'

テーブル名が同じなので、2 つのレコードを取得します。スキーマ名にも基づいて除外する方法はありますか?

4

1 に答える 1

2

テーブルを使用するINFORMATION_SCHEMAと、より簡単で移植性が高くなります。

SELECT c.column_name
  FROM information_schema.columns c
 WHERE c.table_name = 'Admin' and c.table_schema = 'SCHEMA'

の詳細情報INFORMATION_SCHEMA.COLUMNS

于 2011-10-07T15:28:47.400 に答える