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

Cách tìm tất cả các tên cột của một từ đồng nghĩa

IMHO bạn không nên sử dụng INFORMATION_SCHEMA cho bất kỳ điều nào trong số này . Những điều sau đây sẽ hoạt động đối với một bảng hoặc một dạng xem:

SELECT UPPER(name)
  FROM sys.columns
  WHERE OBJECT_NAME([object_id]) = N'mutable';

Những điều sau đây sẽ phù hợp với một từ đồng nghĩa (một yêu cầu bạn đã thay đổi sau này):

SELECT UPPER(name) 
  FROM sys.columns AS c
  CROSS APPLY
  (
    SELECT name
    FROM sys.synonyms 
    WHERE name = N'mutable'
    AND OBJECT_ID([base_object_name]) = c.[object_id]
  ) AS x;
  

Bạn cũng có thể chỉ cần nói:

DECLARE @obj INT;

SELECT @obj = OBJECT_ID([base_object_name]) 
  FROM sys.synonyms WHERE name = N'mutable';

SELECT UPPER(name) FROM sys.columns WHERE [object_id] = @obj;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối hai bảng, chỉ sử dụng giá trị mới nhất của bảng bên phải

  2. Sao chép nhiều bản ghi với mối quan hệ chi tiết chính

  3. Làm thế nào để nối nhiều hàng?

  4. Truy vấn con của SQL Server trả về nhiều hơn 1 giá trị. Điều này không được phép khi truy vấn con theo sau =,! =, <, <=,>,> =

  5. Bản dịch ngôn ngữ cho bảng