【问题标题】:xml formattin in SQL select statementsSQL 选择语句中的 xml 格式
【发布时间】:2014-07-29 09:02:08
【问题描述】:

如果我想在 where not exists 条件有效但 msg 显示 xml 标签时在中间显示带有连字符的 person_id 和 level_name,例如<person_ID>104</person_ID>A2001 。 如何摆脱标签?

DECLARE @level_name nvarchar(MAX) =
        (
        SELECT [person_ID],'-',
                     [level_NAME]+ '  '
        FROM inserted ic 
        where not EXISTS (SELECT 1 FROM [dbo].[levels] c 
                                      WHERE ic.[geo]=c.[GEO] and 
                   and c.area=1)
                      FOR XML PATH('')
         );

    IF @level_name IS NOT NULL
        BEGIN
            RAISERROR('level name not found : %s', 16, 1, @level_name) with log;
        END;

【问题讨论】:

  • 为什么你使用FOR XML PATH?为什么不将所有字符串合二为一,如下所示:[person_ID] + '-' + [level_NAME]+ ' '
  • 我是 xml 新手,如果我不使用 xml 路径,我不知道该怎么办。此路径一次返回多个不匹配的结果。此代码解决了这个问题,SELECT concat ([person_ID],'-', [LEVEL_NAME]) + ' '

标签: sql-server xml tags


【解决方案1】:

在元素 person_id 之前尝试一下:

DECLARE @level_name nvarchar(MAX) =
        (
        SELECT '' + [person_ID],'-',
                     [level_NAME]+ '  '
        FROM inserted ic 
        where not EXISTS (SELECT 1 FROM [dbo].[levels] c 
                                      WHERE ic.[geo]=c.[GEO] and 
                   and c.area=1)
                      FOR XML PATH('')
         );

    IF @level_name IS NOT NULL
        BEGIN
            RAISERROR('level name not found : %s', 16, 1, @level_name) with log;
        END;

此解决方案的基本测试是:

    SELECT ''+[person_ID],'-',
                 [level_NAME]+ '  '
    FROM (select 1 AS person_id, 'l' AS level_name) ic 
                  FOR XML PATH('')

相比

    SELECT [person_ID],'-',
                 [level_NAME]+ '  '
    FROM (select 1 AS person_id, 'l' AS level_name) ic 
                  FOR XML PATH('')

【讨论】:

  • 仍然得到相同的输出<person_ID>105</person_ID>-A2001
  • 我添加了一个示例来阐明显示在 person_id 之前添加''+ 效果的解决方案
  • 感谢这给了我最初想要的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 2015-07-25
相关资源
最近更新 更多