3

私のデータベースでは、名前の中央に「_」文字が含まれるテーブルをいくつか作成しました。それらすべてのテーブルを見つけたいと思います。
例えば:

Doc_Amit,Doc_Raj,chem_Man etc

以下のようにテーブル名を見つけるためのクエリを知っています:

select * from sys.tables where name like '%%'

しかし、私の質問は、ワイルドカード文字「_」を含むテーブル名のみを取得するには、% と % の間に何を書くべきですか??

注:私はSQL Server 2012を使用しています

4

2 に答える 2

5

これを試してみてください -

SELECT s.name + '.' + o.name
FROM sys.objects o
JOIN sys.schemas s ON o.[schema_id] = s.[schema_id]
WHERE o.name LIKE  '%\_%' ESCAPE '\'
    AND o.[type] = 'U'

コメントへの回答 -

    SELECT * 
    FROM sys.objects o

    -> 

ALTER VIEW sys.objects AS
    SELECT *
    FROM sys.objects$

    -----------------------------

    SELECT * 
    FROM sys.tables t

    ->

ALTER VIEW sys.tables AS
    SELECT *
    FROM sys.objects$ o
    LEFT JOIN sys.sysidxstats lob ON lob.id = o.object_id AND lob.indid <= 1
    LEFT JOIN sys.syssingleobjrefs ds ON ds.depid = o.object_id AND ds.class = 8 AND ds.depsubid <= 1   -- SRC_INDEXTOLOBDS 
    LEFT JOIN sys.syssingleobjrefs rfs ON rfs.depid = o.object_id AND rfs.class = 42 AND rfs.depsubid = 0   -- SRC_OBJTOFSDS
    LEFT JOIN sys.syspalvalues ts ON ts.class = 'LEOP' AND ts.value = o.lock_escalation_option
    WHERE o.type = 'U'
于 2013-04-15T12:18:07.147 に答える