search表名

我使用以下来在我的存储过程中searchstring:

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

是否容易修改上面的内容,以便在特定的数据库“DBname”中search表名?

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

我正在使用这个工作正常

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

我假设你想传递数据库名称作为参数,而不是只运行:

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

如果是这样,您可以使用dynamicSQL将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; 

你也可以使用show命令。

 show tables like '%tableName%' 

加上@ [RichardTheKiwi]的回答。

每当我search一个表的列表,一般我想从所有的select或删除它们。 以下是为您生成这些脚本的脚本。

生成的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;