搜索表名

我使用以下方法在特定数据库的存储过程中搜索字符串:

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

修改以上内容以便在特定的 db“ DBname”中搜索表名是否容易?

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

I am assuming you want to pass the database name as a parameter and not just run:

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;

我在用这个,效果很好

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

添加到@[ RichardTheKiwi ]的回答。

无论何时搜索表列表,通常我都想从所有表中选择或删除它们。下面是为您生成这些脚本的脚本。

生成的 select 脚本还添加了一个 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;

也可以使用 show 命令。

show tables like '%tableName%'

如果您想查看所有数据库服务器范围内的所有表并获得输出,可以使用未记录的 Sp _ MSforeachdb过程:

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

如果您喜欢不区分大小写的搜索:

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

or

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE Lower(TABLE_NAME) LIKE Lower('%%')

我想张贴一个简单的解决方案,每个模式你已经得到。如果您正在使用 MySQLDB,您可以简单地从模式中获取所有表的名称,并在其上添加 WHERE-Like 条件。您也可以使用如下命令行来完成:

SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';

其中 tables_in_<your_shcema_name>返回 SHOW TABLES命令的列名。

还可以使用 Filter 按钮筛选包含特定字符串的表。 可以对存储过程和视图执行同样的操作。

enter image description here

你可使用以下连结:

Select * from sys.tables where name like '%yourtablename%'

这将工作的罚款... 。

从系统表中选择 * WHERE name LIKE '%%'