Для поиска строк в моих хранимых процедурах я использую следующее:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
Легко ли изменить приведенное выше, чтобы он выполнял поиск по именам таблиц в конкретном db "DBname"?
sql
sql-server
sql-server-2008-r2
почему
источник
источник
select name from DBname.sys.tables where name like '%xxx%' and is_ms_shipped = 0; -- << comment out if you really want to see them
источник
and is_ms_shipped = 0;
, похоже, мало чтоЕсли вы хотите просмотреть все таблицы во всех базах данных на сервере и получить результат, вы можете использовать недокументированную процедуру sp_MSforeachdb :
sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''
источник
Я предполагаю, что вы хотите передать имя базы данных в качестве параметра, а не просто запустить:
SELECT * FROM DBName.sys.tables WHERE Name LIKE '%XXX%'
Если это так, вы можете использовать динамический SQL для добавления имени базы данных в запрос:
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;
источник
Вы также можете использовать кнопку «Фильтр» для фильтрации таблиц с определенной строкой в ней. То же самое можно сделать с хранимыми процедурами и представлениями.
источник
Добавление к ответу @ [RichardTheKiwi].
Всякий раз, когда я ищу список таблиц, я обычно хочу выбрать из всех или удалить их. Ниже приведен сценарий, который генерирует эти сценарии для вас.
Сгенерированный скрипт выбора также добавляет столбец 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;
источник
Я знаю, что это старый поток, но если вы предпочитаете поиск без учета регистра:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE Lower(TABLE_NAME) LIKE Lower('%%')
источник
вы также можете использовать команду show.
show tables like '%tableName%'
источник
Я хочу опубликовать простое решение для каждой вашей схемы. Если вы используете MySQL DB, вы можете просто получить из своей схемы все имя таблицы и добавить к нему условие WHERE-LIKE. Вы также можете сделать это с помощью обычной командной строки следующим образом:
SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';
где
tables_in_<your_shcema_name>
возвращает имя столбцаSHOW TABLES
команды.источник