2013-07-09 36 views
1

我有一个表称为User与列Orders ... Orders将包含用户的orderID ..单用户可以拥有多个OrderID的,所以我需要存储多个使用XML在一列中的值。需要像这样保存在列要存储的值作为XML格式在SQL Server中的列

<Orders> 
    <OrderID>45586</OrderID> 
    <OrderID>45578</OrderID> 
</Orders> 

如何做到这一点使用存储过程或C#代码,需要在末尾添加子节点,如果新的订单放在

请帮帮忙......

+3

通常你不存储M:N的关系在单列,但在具有UserID和OrderID的桥表中。 – okrumnow

+2

***不要这样做!***这是一个***可怕的糟糕的设计。使用正确的方式 - 使用与用户和订单之间的“链接”表的M:N关系。这种方法从一开始就是有缺陷的 - 你会***后悔的行为!停止并重新设计您的方法 –

+0

或者如果您不需要关系模型,请选择真实的文档数据库(MongoDB,RavenDB等)。 –

回答

1
create table #temp(val varchar(100)) 
insert into #temp(val) values (
cast 
((
SELECT 
    1 as a,2 as b,3 as c 

    FOR 
    XML PATH('Fruits'), 
    TYPE) 
as varchar(100))) 
select * from #temp 
+0

+1 **'好的解决方案** ** – 2013-07-09 09:57:43

+0

@ Janty Yours是一个不错的解决方案,但是当我们选择表中的值时,它只返回'VARCHAR'的值。因此,我将'CAST'改为'CONVERT'并将变量的数据类型从'VARCHAR'转换为'XML' – Rajesh

0

除了不这样做是为了你的数据库,首先正常化,这是语法如何在SQL Server 2005和更高环境修改

declare @xml xml 
    declare @newElement xml 
    select @xml = '<Orders> 
     <OrderID>45586</OrderID> 
     <OrderID>45578</OrderID> 
    </Orders>' 

    select @newElement = '<OrderID>12</OrderID>' 

    set @xml.modify(
    'insert sql:variable("@newElement") 
    as last into (//Orders)[1]' 
    ) 

    select @xml 
相关问题