Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използване на динамичен SQL за указване на име на колона чрез добавяне на променлива към проста sql заявка

Ако се опитвате да укажете името на колоната динамично, можете да разгледате изпълнението на динамичен sql. Трябва обаче първо да прочетете за опасностите от този подход:

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

От тази страница има образец, който показва динамично указване на името на таблицата -- можете да го промените, така че вместо това да указва динамично името на колоната:

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

Така например, ако сте имали таблица „MyTable“ с колони с имена „x“, „y“ и „z“, тя може да изглежда така:

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. Използване на Dapper с SQL пространствени типове като параметър

  2. Запазването на XML съдържание с кодиране ISO-8859-1 с помощта на Entity Framework в XML колоната на SQL Server 2008 дава грешка при кодиране

  3. Агрегатът може да не се появи в списъка с набори на оператор UPDATE

  4. Коя SQL заявка е по-бърза? Филтриране по критерии за присъединяване или клауза Къде?

  5. Visual Studio 2008/2010 и SQL Server 2008 на Windows 7 Home Premium