Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Używanie dynamicznego SQL do określenia nazwy kolumny poprzez dodanie zmiennej do prostego zapytania sql

Jeśli próbujesz określić nazwę kolumny dynamicznie, możesz przyjrzeć się wykonywaniu dynamicznego sql. Należy jednak najpierw przeczytać o niebezpieczeństwach tego podejścia:

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

Na tej stronie znajduje się przykład, który pokazuje dynamiczne określanie nazwy tabeli — można ją zmienić, aby zamiast tego dynamicznie określała nazwę kolumny:

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

Na przykład, jeśli masz tabelę „MojaTabela” z kolumnami o nazwach „x”, „y” i „z”, może wyglądać tak:

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. Wybierz górne 10 procent, a także dolny procent w SQL Server

  2. Zapytanie o podział serwera SQL

  3. Jeszcze raz:procedura składowana a TV-UDF

  4. Sprawdź, ile elementów poczty znajduje się w kolejce w poczcie bazy danych w programie SQL Server (T-SQL)

  5. Połącz SQL Server z HubSpot CRM