42

多くのテーブル(約200)を含むSQL Server2008Dbに取り組んでいます。これらのテーブルの多くには、「CreatedDate」という名前のフィールドが含まれています。この特定のフィールドですべてのテーブルスキーマを識別しようとしています。

これを行うためのSQLクエリはありますか?

4

8 に答える 8

58

information_schemaにクエリを実行します。これには、基になるテーブルよりもはるかに読みやすいビューがあります。

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%create%'
于 2009-08-12T19:07:18.737 に答える
6

また、これに利用できる多くのサードパーティツールの1つを使用してこれを試すこともできます。

クエリは単純な検索には最適ですが、データをさらに操作する必要がある場合は、参照を検索するなど、これらを使用してはるかに優れた作業を行うことができます。

また、これらは、一部のオブジェクトが暗号化されており、検索する必要がある場合に非常に便利です。

私は無料のApexSQLSearchを使用していますが、RedGateやSSMSTool Packなど、さらに多くの(無料の)市場もあります。

于 2013-06-04T11:13:00.110 に答える
5
  select object_name(c.object_id) as table_name
    , schema_name(t.schema_id) as schema_name
    from sys.columns c
    join sys.tables t on c.object_id = t.object_id
     where c.name=N'CreatedDate';

他のテーブルプロパティも必要な場合は少し複雑になりますが、sys.tablessys.columnsなどのオブジェクトカタログビューを参照します。

于 2009-08-12T15:37:52.123 に答える
3

お気に入り...

SELECT objParent.name AS parent, obj.name, col.*
FROM sysobjects obj 
    LEFT JOIN syscolumns col
        ON obj.id = col.id
    LEFT JOIN sysobjects objParent
        ON objParent.id = obj.parent_obj
WHERE col.name LIKE '%Comment%'
   OR obj.name LIKE '%Comment%'

上記で「コメント」を検索しています。

直接一致させる場合は、パーセント記号を削除します。

これは、テーブル、フィールド、および主キー名、制約、ビューなどを検索します。

また、テーブルを操作した後でStoredProcsを検索する場合(およびprocを一致させる必要がある場合)、次を使用します...

SELECT name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Comment%'

お役に立てば幸いです。これら2つのクエリが非常に役立つと思います。

于 2010-10-18T21:51:11.227 に答える
2

私の場合、クエリを実行するための読み取りアクセス権しか持っていないので、この関数を頻繁に使用する必要があります。

SELECT  *
FROM    INFORMATION_SCHEMA.TABLES
where   TABLES.TABLE_NAME like '%your table name here%'

.TABLESを.COLUMNSに置き換えると、次のようになります。

 SELECT *
 FROM   INFORMATION_SCHEMA.COLUMNS
 WHERE  columns.COLUMN_NAME like '%your column name here%'
于 2014-01-21T22:08:06.270 に答える
1

このクエリを使用します:

SELECT 
    t.name AS table_name,
    SCHEMA_NAME(schema_id) AS schema_name,
    c.name AS column_name , *
FROM sys.tables AS t
    INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
Where 
    ( c.name LIKE '%' + '<ColumnName>' + '%' )
    AND 
    ( t.type = 'U' ) -- Use This To Prevent Selecting System Tables
于 2013-09-25T13:35:44.973 に答える
0

同じことですが、ANSI方式です

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME ='CreateDate')

于 2009-08-12T17:10:20.627 に答える
0

SQL Server 2008では、このためにSQLクエリを入力する必要はありません。

SSMSオブジェクトエクスプローラーで、必要なデータベースのデータベースまたはテーブルを選択し(1つのデータベースで検索する必要がある場合)、メニュー[表示]-> [オブジェクトエクスプローラーの詳細]を開き(またはF7キーを押します)、[検索]テキストボックスに%CreatedDate%と入力し、Enterキーを押します。

于 2010-10-19T01:18:55.077 に答える