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

Có cách nào để chỉ định tên bảng dưới dạng một chuỗi không?

Bạn có thể gói nó trong một câu lệnh EXEC như sau:

declare @my_tablename nvarchar(100) = 'mytable';
exec('
SELECT * FROM 
(
  SELECT * FROM 
  (
    SELECT * FROM ' + @my_tablename + '
  )
  INNER JOIN ' + @my_tablename + ' ON ...'
);

Nhưng không, intellisense sẽ không hoạt động trong trường hợp đó.

Nếu bạn biết trước kết quả đầu ra của mình sẽ như thế nào, thì bạn có thể khai báo một bảng tạm thời để chứa các kết quả và sau đó bạn có thể truy cập mà không cần EXEC. Bạn sẽ có intellisense trên bảng tạm thời.

Ví dụ:

  --this must match whatever your SELECT is going to return
  CREATE TABLE #results(
    FIELD1 INT
   ,FIELD2 NVARCHAR(100)
   ,FIELD3 BIT
   );

EXEC('
  INSERT INTO #results(field1,field2,field3)
  SELECT FIELD1,FIELD2,FIELD3 FROM ' + @my_tablename
);

select * from #results  --you will have intellisense on #results


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Tôi có cần sử dụng câu lệnh GO giữa các lô không?

  2. Nhận số ngày trong tuần (Chủ nhật, Thứ Hai, Thứ Ba) giữa hai ngày SQL

  3. Tìm hiểu xem Ràng buộc KIỂM TRA là Cấp cột hay Cấp bảng trong SQL Server (Ví dụ T-SQL)

  4. SQL Server Intellisense không hoạt động trên * một số * máy chủ

  5. Cách cài đặt SSMS