0

我正在寻找解决插入查询的挑战,其中 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.

我将不胜感激有关此主题的一些见解,谢谢。

4

2 回答 2

0

好吧,您没有说如何获取字符串列表,但通常您可以动态创建 SQL 字符串并执行它:

EXEC ('INSERT INTO [table_name] ' +
      '(cust_name, action, ' + action_key + ') ' + 
      'VALUES (''Bob'', ''Approve'', ''ApproveId1'')')
于 2013-10-23T19:34:46.667 回答
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)

参考:如何在不创建函数的情况下在 SQL Server 中拆分分隔字符串?

于 2013-10-23T19:49:13.523 回答