Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सरल एसक्यूएल क्वेरी में एक चर जोड़कर कॉलम नाम निर्दिष्ट करने के लिए गतिशील एसक्यूएल का उपयोग करना

यदि आप कॉलम नाम को गतिशील रूप से निर्दिष्ट करने का प्रयास कर रहे हैं, तो आप गतिशील एसक्यूएल निष्पादित करने पर एक नज़र डाल सकते हैं। हालांकि, आपको पहले इस दृष्टिकोण के खतरों के बारे में पढ़ना सुनिश्चित करना चाहिए:

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

तो उदाहरण के लिए यदि आपके पास 'x', 'y', और 'z' नाम के कॉलम वाली 'MyTable' टेबल है, तो यह ऐसा दिखाई दे सकता है:

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. SQL सर्वर (T-SQL) में दिनांक से वर्ष का दिन प्राप्त करें

  2. DATETIMEOFFSETFROMPARTS() SQL सर्वर में उदाहरण (T-SQL)

  3. मैं SQL सर्वर 2008 में ऑब्जेक्ट निर्भरताओं के साथ कॉलम कैसे छोड़ूं?

  4. टी-एसक्यूएल का उपयोग करके कई डेटाबेस संलग्न करें

  5. एक ही एसएसआईएस पैकेज को अलग-अलग समय पर अलग-अलग मापदंडों के साथ निष्पादित करना