Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn SQL để tìm tên cột trong Cơ sở dữ liệu

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu + Xác thực Windows + Tên người dùng / Mật khẩu?

  2. Chọn bản ghi cuối cùng từ bảng bằng cách sử dụng nhóm theo

  3. Khi nào sử dụng chỉ mục được phân cụm hoặc không được phân cụm trong SQL Server

  4. So sánh hai hàng và xác định các cột có giá trị khác nhau

  5. Số lượng lõi của Entity Framework không có hiệu suất tối ưu