2011-03-30 118 views
-1

我有以下结构的表:FOR XML EXPLICIT格式输出

------------------------------------ 
invoice_id | device_id | terminal_id 
------------------------------------ 
1   | SY000001 | GP000001 
1   | SY000001 | GP000001 
1   | SY999000 | GP999000 
2   | SY111001 | GP111001 

我想在下面的格式,从表中的数据:

<a href="view_divece.aspx?id=SY000001">SY000001 [GP000001]</a>&nbsp;|&nbsp; 
<a href="view_divece.aspx?id=SY999000">SY999000 [GP999000]</a>&nbsp;|&nbsp; 

目前我能(不带分隔符“  |  ”):

<a href="view_divece.aspx?id=SY000001">SY000001 [GP000001]</a> 
<a href="view_divece.aspx?id=SY999000">SY999000 [GP999000]</a> 

我的查询是:

SELECT DISTINCT 
    1 as tag, 
    null as parent, 
    'view_device.aspx?id=' + device_id [a!1!href], 
    device_id + ' [' + terminal_id + ']' [a!1!] 
FROM DEALERS_SIMPAYMENTS 
WHERE 
    invoice_id = 1 
FOR XML EXPLICIT 

这是可能的,如果是,怎么做?

SQL server 2008.

+0

重新标记:问题不是XML相关 – MarcoS 2011-03-30 15:21:42

+0

哪个版本** **的SQL Server? – 2011-03-30 15:40:36

+0

加油!与SQL查询生成HTML? – 2011-08-22 13:31:06

回答

0

看来你想要一个HTML片段而不是XML。在这种特殊情况下,我会去字符串连接。类似于:

SELECT '<a href="view_divece.aspx?id=' + device_id + '">' + 
     device_id + ' [' + terminal_id + ']</a>&nbsp;|&nbsp;' 
FROM DEALERS_SIMPAYMENTS 
WHERE invoice_id=1 

应该这样做。这只适用于您的简单示例,并且不会在您的数据中出现有趣角色的XML/HTML转义,以及这样的好事情。它还返回单独行中的条目。我不知道这是否有问题。

+0

我想在行上得到结果。 – 2011-03-30 17:04:21

1

难道你不能只使用这个查询来实现你所需的结果?

SELECT 
    DISTINCT 
    '<a href="view_divece.aspx?id=' + 
    t.device_id + '">' + t.device_id + ' [' + 
    t.terminal_id + ']</a>&nbsp;|&nbsp' 
FROM DEALERS_SIMPAYMENTS t 
WHERE t.invoice_id = 1 

返回两个字符串:

<a href="view_divece.aspx?id=SY00001">SY00001 [GP00001]</a>&nbsp;|&nbsp 
<a href="view_divece.aspx?id=SY999000">SY999000 [GP999000]</a>&nbsp;|&nbsp