Vì vậy, nếu bạn đang sử dụng SQL Server thì bạn có thể chạy điều này để tìm tất cả các cột trong tất cả các bảng.
select
'SELECT * FROM '
+ st.name +
' WHERE ' +
sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id
Bằng cách sử dụng kết quả đầu ra của truy vấn này, bạn tạo một danh sách tất cả các kết hợp SELECTS có thể có cho mỗi cột trong mỗi bảng.
Điều này chỉ xuất ra danh sách tất cả các lệnh, bây giờ bạn phải thực hiện chúng. Để thực hiện mỗi lệnh, bạn phải tạo một con trỏ sẽ đi qua toàn bộ danh sách kết quả.
Bạn sẽ bao quanh SELECT
trước đó câu lệnh bằng con trỏ để lướt qua từng truy vấn và thực thi nó. Do đó, mã trở thành một cái gì đó giống như thế này
DECLARE @myCommand VARCHAR(1000)
DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
select
'SELECT * FROM '
+ st.name +
' WHERE ' +
sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id
OPEN c
FETCH NEXT FROM c INTO @myCommand
WHILE @@FETCH_STATUS = 0
BEGIN
sp_executesql @myCommand
FETCH NEXT FROM c INTO @myCommand
END
CLOSE c
DEALLOCATE c