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

डायनामिक एमएस एसक्यूएल वैरिएबल पार्सिंग गलत तरीके से

  1. सही प्रकार का प्रयोग करें SYSNAME पहचानकर्ताओं के लिए, NVARCHAR(MAX) क्वेरी के लिए
  2. REPLACE का उपयोग करें संयोजित करने के बजाय इसे डीबग करना बहुत आसान होगा, खासकर जब आपको स्ट्रिंग अक्षर की आवश्यकता हो
  3. QUOTENAME का उपयोग करने पर विचार करें समारोह

कोड:

DECLARE 
    @tableName  SYSNAME,
    @columnName SYSNAME,
    @prompt     VARCHAR(20),
    @dynSQL     NVARCHAR(MAX);

SET @tableName  = QUOTENAME('A1-ExciseESN');
SET @columnName = QUOTENAME('Anode Excise ESN (A1)');

SET @dynSQL = 
N'INSERT INTO  <tableName> 
 ([trav num], <columnName>)
Select [trav num], <columnName>
FROM [temprmi$] t1
PIVOT(min([Lvl1 Trace Data])
FOR [Prompt Text] IN (<columnName>)
   ) AS PVTTable
     where <columnName> is not null 
        and [trav num] not in (select [trav num] from <tableName> )'

SET @dynSQL = REPLACE(REPLACE(@dynSQL, '<tableName>', @tableName),
               '<columnName>', @columnName);

PRINT @dynSQL;

LiveDemo

आउटपुट:

INSERT INTO  [A1-ExciseESN] 
 ([trav num], [Anode Excise ESN (A1)])
Select [trav num], [Anode Excise ESN (A1)]
FROM [temprmi$] t1
PIVOT(min([Lvl1 Trace Data])
FOR [Prompt Text] IN ([Anode Excise ESN (A1)])
   ) AS PVTTable
     where [Anode Excise ESN (A1)] is not null 
       and [trav num] not in (select [trav num] from [A1-ExciseESN] )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक पूर्ण जॉइन की तुलना में एक आंतरिक/दाएं/बाएं जॉइन 14x धीमा कैसे हो सकता है?

  2. कॉलम में पंक्तियाँ

  3. SQL सर्वर 2005 के साथ भारी डेटाबेस उपयोग का अनुकरण कैसे करें

  4. वर्चर को तारीख में बदलें और इसे दूसरी तारीख से घटाएं

  5. xsi के मान का चयन कैसे करें:SQL सर्वर में विशेषता टाइप करें?