sql >> Databáze >  >> RDS >> Sqlserver

Jak vygenerovat aktualizační dotaz dynamického dotazu (automaticky)?

Úprava řešení poskytnutého @rivarolle

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

Toto funguje, jen potřebujete funkci pro čištění speciálních znaků XML a další pro vkládání zpět a dynamické dotazy jsou vytištěny a připraveny k aktualizaci.



  1. Jak vypsat povolenou ip, která se může přihlásit k mysql?

  2. Proč se mi TableRegistry nenachází v CakePhP 3.0?

  3. Změny licencí Common Sense pro SQL Server 2014 Standard Edition

  4. Použití dat Microsoft Access ve Wolfram Mathematica