Поиск имен таблиц - программирование
Подтвердить что ты не робот

Поиск имен таблиц

Я использую следующее для поиска строк в моих хранимых процедурах:

use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'

Легко ли изменить это выше, чтобы он искал имена таблиц в определенном db "DBname"?

4b9b3361

Ответ 1

select name
  from DBname.sys.tables
 where name like '%xxx%'
   and is_ms_shipped = 0; -- << comment out if you really want to see them

Ответ 2

Я использую это и прекрасно работаю

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '%%'

Ответ 3

Я предполагаю, что вы хотите передать имя базы данных в качестве параметра, а не просто запустить:

SELECT  *
FROM    DBName.sys.tables
WHERE   Name LIKE '%XXX%'

Если это так, вы можете использовать динамический SQL для добавления dbname в запрос:

DECLARE @DBName NVARCHAR(200) = 'YourDBName',
        @TableName NVARCHAR(200) = 'SomeString';

IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
    BEGIN
        PRINT 'DATABASE NOT FOUND';
        RETURN;
    END;

DECLARE @SQL NVARCHAR(MAX) = '  SELECT  Name
                                FROM    ' + QUOTENAME(@DBName) + '.sys.tables
                                WHERE   Name LIKE ''%'' + @Table + ''%''';

EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;

Ответ 4

Добавляем к ответу @[RichardTheKiwi].

Всякий раз, когда я ищу список таблиц, я вообще хочу выбрать из них или удалить их. Ниже приведена script, которая генерирует эти сценарии для вас.

Сгенерированный select script также добавляет столбец tableName, чтобы вы знали, на какой таблице вы смотрите:

select 'select ''' + name + ''' as TableName, * from ' + name as SelectTable,
'delete from ' + name as DeleteTable
from sys.tables
where name like '%xxxx%'
and is_ms_shipped = 0; 

Ответ 5

вы также можете использовать команду show.

show tables like '%tableName%'

Ответ 6

Если вы хотите посмотреть во всех таблицах во всех Базах данных по всему серверу и получить вывод:

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''