SQL在整个MS SQL 2000数据库中搜索值

Nit*_*xDM 1 sql

我想在整个MS SQL 2000数据库中搜索一个值.这只是为了帮助发展.在考虑这个问题时请记住这一点.

这将获取我正在寻找的所有表名和数据类型列:

SELECT Columns.COLUMN_NAME, tables.TABLE_NAME
FROM INFORMATION_SCHEMA.Columns as Columns 
JOIN INFORMATION_SCHEMA.TABLES as tables 
On Columns.TABLE_NAME = tables.TABLE_NAME
WHERE Columns.DATA_TYPE = 'INT'  
Run Code Online (Sandbox Code Playgroud)

我在想这样的事情:

-- Vars
DECLARE @COUNTER INT
DECLARE @TOTAL INT
DECLARE @TABLE CHAR(128)
DECLARE @COLUMN CHAR(128)
DECLARE @COLUMNTYPE CHAR(128)
DECLARE @COLUMNVALUE INT

-- What we are looking for
SET @COLUMNTYPE = 'INT'
SET @COLUMNVALUE = 3
SET @COUNTER = 0

-- Find out how many possible columns exist
SELECT @TOTAL = COUNT(*)  
FROM INFORMATION_SCHEMA.Columns as Columns 
JOIN INFORMATION_SCHEMA.TABLES as tables 
On Columns.TABLE_NAME = tables.TABLE_NAME
WHERE Columns.DATA_TYPE = @COLUMNTYPE
PRINT CAST(@TOTAL AS CHAR) + 'possible columns'
WHILE @COUNTER < @TOTAL
BEGIN
    SET @COUNTER = @COUNTER +1
    -- ADD MAGIC HERE
END
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新我最近发现这个工具运行得很好.

Mar*_*ell 6

由于它只是dev(并且可能不一定非常优雅),如何使用TSQL生成一堆TSQL,然后将其复制回查询窗口并执行?

SELECT 'SELECT * FROM [' + tables.TABLE_NAME + '] WHERE ['
       + Columns.Column_Name + '] = ' + CONVERT(varchar(50),@COLUMNVALUE)
FROM INFORMATION_SCHEMA.Columns as Columns
INNER JOIN INFORMATION_SCHEMA.TABLES as tables 
    On Columns.TABLE_NAME = tables.TABLE_NAME
WHERE Columns.DATA_TYPE = @COLUMNTYPE
Run Code Online (Sandbox Code Playgroud)

它不会很漂亮,但它应该可以工作......另一种方法是将类似上面的内容插入到表变量中,然后使用表循环遍历表变量EXEC (@Sql).但出于开发目的,它可能不值得......