【问题标题】:Removing XML-Tags in nested SELECT-Statement from FOR XML PATH() in SQL Server 2014从 SQL Server 2014 中的 FOR XML PATH() 中删除嵌套 SELECT 语句中的 XML 标记
【发布时间】:2019-12-28 00:38:28
【问题描述】:

我需要从嵌套的 sql 语句中删除 xml-tags:

SELECT STUFF(
    (
        SELECT Mailbox
        FROM dbo.Mailbox
        WHERE UnitGroup IN (
            SELECT a.Groups
            FROM (
                SELECT DISTINCT ID, GroupFC AS Groups
                FROM dbo.v_Pending

                UNION ALL

                SELECT DISTINCT ID, GroupBN AS Groups
                FROM dbo.v_Pending

                UNION ALL

                SELECT DISTINCT ID, GroupRM AS Groups
                FROM dbo.v_Pending
            ) AS a
            WHERE a.Groups IS NOT NULL
            AND a.ID = 12345
        )
        FOR XML PATH('')
    ), 1, 0, ''
) AS Mails

我用FOR XML PATH('') 语句尝试过,但它不起作用。也许有人知道错误。我总是得到 xml-tags -.-

目前结果如下:

<Mailbox>abc@xyz.com;</Mailbox>
<Mailbox>def@xyz.com;</Mailbox>

【问题讨论】:

  • 你希望它返回什么?

标签: sql sql-server tsql sql-server-2014


【解决方案1】:

我找到了解决问题的方法。我必须在嵌套的 SELECT-Statement 中添加一个空字符串 '':

SELECT STUFF(
    (
        SELECT '' + Mailbox
        FROM dbo.Mailbox
        WHERE UnitGroup IN (
            SELECT a.Groups
            FROM (
                SELECT DISTINCT ID, GroupFC AS Groups
                FROM dbo.v_Pending

                UNION ALL

                SELECT DISTINCT ID, GroupBN AS Groups
                FROM dbo.v_Pending

                UNION ALL

                SELECT DISTINCT ID, GroupRM AS Groups
                FROM dbo.v_Pending
            ) AS a
            WHERE a.Groups IS NOT NULL
            AND a.ID = 12345
        )
        FOR XML PATH('')
    ), 1, 0, ''
) AS Mails

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2014-11-04
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多