我在表列中存储了一些查询,以便稍后可以通过传递一些参数来执行它们。 但由于特殊字符的原因,将查询格式化为更新句子一直非常烦人。如何生成动态查询的更新查询(自动)?
例如:
SELECT * FROM MOUNTAINS WHERE MON_NAME='PALMA' AND MON_DESC LIKE '%TRANVULCANIA%'
然后,我只需要为UDPATE查询字符串:
UPDATE QUERIES
SET QUE_SEL='SELECT * FROM MOUNTAINS WHERE MON_NAME='''+'PALMA'+''' AND MON_DESC LIKE '''+'%TRANVULCANIA%'+''' '
WHERE QUE_ID=1
,你可以看到第一个'必须更换''' + '但隔壁'必须替换为'+'''
这是我工作的查询:
DECLARE @QUERY VARCHAR(MAX)
SELECT @QUERY='SELECT * FROM QUERIES WHERE QUE_NOMBRE='''+'PRUEBA 1'+''' '
SELECT
t.r.value('.', 'varchar(255)') 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)
这就是结果:
token id
-------------------------------------------------- --------------------
SELECT * FROM QUERIES WHERE QUE_NOMBRE= 1
' 2
PRUEBA 1 3
' 4
5
现在我想一列,告诉我什么时候开,什么时候关,然后我可以设置最终替换。
你有没有考虑命名参数,因为'SELECT * FROM Table WHERE Column = @ Value'? –
只是一个例子..当然我使用@values,但我在我的查询中使用了一些xml,所以我需要使用' – Artemination