【问题标题】:FOR XML EXPLICIT formatting outputFOR XML EXPLICIT 格式化输出
【发布时间】:2011-03-30 14:57:34
【问题描述】:

我有一个结构如下的表:

------------------------------------
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 服务器 2008。

【问题讨论】:

  • 重新标记:问题与 XML 无关
  • SQL Server 的哪个版本??
  • 加油!使用 sql 查询生成 html ??

标签: sql-server for-loop


【解决方案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

【讨论】:

    【解决方案2】:

    您似乎想要一个 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 转义。它还以单独的行返回条目。不知道有没有问题。

    【讨论】:

      猜你喜欢
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多