Answers:
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将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;
我想为您拥有的每个架构发布一个简单的解决方案。如果您使用的是MySQL DB,则只需从架构中获取所有表的名称,并在其上添加WHERE-LIKE条件。您也可以按照以下常规命令行进行操作:
SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';
其中,tables_in_<your_shcema_name>
返回列的SHOW TABLES
命令名称。