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

एक गतिशील क्वेरी (स्वचालित रूप से) की अद्यतन क्वेरी कैसे उत्पन्न करें?

@rivarole

. द्वारा दिए गए समाधान को अपनाना
DECLARE @QUERY VARCHAR(MAX)
DECLARE @FORMATTED varchar(max)

SELECT @QUERY='SELECT * FROM QUERIES WHERE QUE_NOMBRE='''+'PRUEBA 1'+''''

;WITH TOKENS AS(
SELECT 
      t.r.value('.', 'varchar(MAX)') AS token
      , ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS Id 
FROM (
        SELECT myxml = CAST('<t>' + REPLACE(@QUERY, '''', '</t><t>''</t><t>') + '</t>' AS XML)
            ) p
            CROSS APPLY myxml.nodes('/t') t(r)
    ) 
    ,

Tokens2 as (
        SELECT 
        TOKENS.token as token
        ,quotes.row%2 as tipoapostrofe
from Tokens 
left join (select row_number() over( order by Id asc) as row, a.* FROM (SELECT * from Tokens) a where Token = '''') quotes 
    on quotes.Id = Tokens.Id
)

SELECT @FORMATTED = STUFF((
    SELECT ' ' + REPLACE(token,'''',CASE tipoapostrofe WHEN 1 THEN '''''''+''' WHEN 0 THEN '''+''''''' ELSE '' END) AS [text()]
    FROM Tokens2
FOR XML PATH('')
    ), 1, 1, '')
print @FORMATTED

यह काम करता है, बस XML विशेष वर्णों की सफाई के लिए एक फ़ंक्शन की आवश्यकता होती है और दूसरे को वापस रखने के लिए, और डायनामिक क्वेरीज़ एक अद्यतन के लिए तैयार मुद्रित की जाती हैं।



  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 सर्वर इंस्टेंस चलाने के सर्वर स्तर के संयोजन को कैसे बदलें

  2. PHP 5.3 MS SQL से कनेक्ट करने के लिए मूल क्लाइंट की पहचान नहीं कर रहा है

  3. SQL सर्वर:प्रथम, द्वितीय और तृतीय डिग्री संपर्कों का चयन कैसे करें

  4. लॉगिन द्वारा अनुरोधित डेटाबेस परीक्षण नहीं खोल सकता। लॉगिन विफल रहा। उपयोगकर्ता 'xyz\ASPNET' के लिए लॉगिन विफल

  5. SQL स्ट्रिंग्स में वेरिएबल को कैसे संयोजित करें