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

Sử dụng SQL động để chỉ định tên cột bằng cách thêm một biến vào truy vấn sql đơn giản

Nếu bạn đang cố gắng chỉ định tên cột động, bạn có thể xem cách thực thi sql động. Tuy nhiên, bạn nên đảm bảo đọc về những nguy hiểm của phương pháp này trước:

http://www.sommarskog.se/dynamic_sql.html

Từ trang đó, có một mẫu hiển thị chỉ định động tên bảng - bạn có thể thay đổi nó để nó chỉ định động tên cột thay thế:

CREATE PROCEDURE general_select @tblname nvarchar(128),
                                @key     varchar(10),
                                @debug   bit = 0 AS
DECLARE @sql nvarchar(4000)
SET @sql = 'SELECT col1, col2, col3
            FROM dbo.' + quotename(@tblname) + '
            WHERE keycol = @key'
IF @debug = 1 PRINT @sql
EXEC sp_executesql @sql, N'@key varchar(10)', @key = @key

Vì vậy, ví dụ:nếu bạn có một bảng 'MyTable' với các cột có tên 'x', 'y' và 'z', nó có thể giống như sau:

DECLARE @columnName nvarchar(128)
DECLARE @sql nvarchar(4000)
set @columnName = 'z'

SET @sql = 'SELECT x, y, ' + @columnName + ' from MyTable'
EXEC sp_executesql @sql, N'@columnName varchar(128)', @columnName = @columnName


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về Chuyển đổi "date" thành "datetimeoffset" trong SQL Server (T-SQL)

  2. SQL Server 2008 Chạy kích hoạt sau khi Chèn, Cập nhật khóa bảng gốc

  3. IS NULL so với =NULL trong mệnh đề where + SQL Server

  4. Làm thế nào để có được sự khác biệt giữa hai hàng cho một trường cột?

  5. Cách tính tổng của cột cụ thể với tháng và năm khôn ngoan