J'utilise les éléments suivants pour rechercher des chaînes dans mes procédures stockées:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
Est-il facile de modifier ce qui précède afin de rechercher les noms de table dans une base de données spécifique "DBname"?
J'utilise ceci et fonctionne bien
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%%'
select name
from DBname.sys.tables
where name like '%xxx%'
and is_ms_shipped = 0; -- << comment out if you really want to see them
Je suppose que vous voulez passer le nom de la base de données en tant que paramètre et pas simplement exécuter:
SELECT *
FROM DBName.sys.tables
WHERE Name LIKE '%XXX%'
Si tel est le cas, vous pouvez utiliser le SQL dynamique pour ajouter le nom de base à la requête:
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;
Si vous souhaitez consulter toutes les tables de toutes les bases de données sur l'ensemble du serveur et obtenir une sortie, vous pouvez utiliser la procédure non documentée sp_MSforeachdb :
sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''
Ajoutant à la réponse de @ [RichardTheKiwi].
Chaque fois que je recherche une liste de tables, en général, je veux les sélectionner ou les supprimer. Vous trouverez ci-dessous un script qui génère ces scripts pour vous.
Le script de sélection généré ajoute également une colonne nomTable afin que vous sachiez de quelle table vous consultez:
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;
vous pouvez également utiliser la commande show.
show tables like '%tableName%'
Je sais que c'est un vieux fil, mais si vous préférez effectuer une recherche sans distinction de casse:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE Lower(TABLE_NAME) LIKE Lower('%%')
Je veux poster une solution simple pour chaque schéma que vous avez. Si vous utilisez MySQL DB, vous pouvez simplement extraire de votre schéma tout le nom de la table et y ajouter la condition WHERE-LIKE. Vous pouvez également le faire avec la ligne de commande habituelle comme suit:
SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';
où tables_in_<your_shcema_name>
renvoie le nom de la colonne de la commande SHOW TABLES
.