sql >> Databasteknik >  >> RDS >> Sqlserver

Använda dynamisk SQL för att ange ett kolumnnamn genom att lägga till en variabel i en enkel SQL-fråga

Om du försöker ange kolumnnamnet dynamiskt kan du ta en titt på att köra dynamisk sql. Du bör dock se till att läsa om farorna med detta tillvägagångssätt först:

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

Från den sidan finns det ett exempel som visar att tabellnamnet dynamiskt specificeras -- du kan ändra det så att det dynamiskt specificerar kolumnnamnet istället:

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

Så om du till exempel hade en tabell 'MyTable' med kolumner som heter 'x', 'y' och 'z', kan det se ut så här:

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. Returnera skillnaden mellan två (datum och tid) PHP

  2. ändra tabellnamnet till versaler

  3. MySQL anser att "е" och "ё" är lika, hur ställer jag in den för att betrakta dem som olika?

  4. CodeIgniter - Gruppera efter med beställning genom att inte fungera som förväntat