我正在寻找解决插件查询的挑战,其中action_key是一个动态的字符串列表。每个新行的cust_name和action字段都相同,但action_key将根据列表中的操作键数量而变化。例如:
INSERT INTO [table_name] (cust_name, action, action_key) VALUES (Bob, Approve, ApproveId1)
INSERT INTO [table_name] (cust_name, action, action_key) VALUES (Bob, Approve, ApproveId2) etc.
我很感激有关这个主题的一些见解,谢谢。
答案 0 :(得分:0)
好吧,你没有说如何获得字符串列表,但通常你可以动态创建一个SQL字符串并执行它:
EXEC ('INSERT INTO [table_name] ' +
'(cust_name, action, ' + action_key + ') ' +
'VALUES (''Bob'', ''Approve'', ''ApproveId1'')')
答案 1 :(得分:0)
你必须使用它,但根据你的XML结构输入,我是如何处理解析。
Declare @cust_name Varchar(50),
@action Varchar(50),
@action_key Varchar(1000)
Select @cust_name = 'Bob',
@action = 'Approve',
@action_key = '<action_keys><action_key>ApproveId1</action_key><action_key>ApproveId2</action_key><action_key>ApproveId3</action_key><action_key>ApproveId4</action_key></action_keys>'
Select @cust_name,
@action,
n.r.value('.', 'varchar(50)')
From (Select Cast(@action_key As Xml)) As s(XMLCol)
Cross Apply s.XMLCol.nodes('action_keys/action_key') as n(r)
参考:How Do I Split a Delimited String in SQL Server Without Creating a Function?