与SELECT with CASE语句中的数字进行比较时出现XML异常

本文关键字:比较 异常 XML 数字 with SELECT CASE 语句 | 更新日期: 2023-09-27 18:20:59

我在SELECT函数中使用了CASE语句,如下所示:

SELECT CASE WHEN a < 0 THEN 0
            ESLE a
            END AS "Number 1"
FROM <TABLE_NAME>

此函数位于C#网站的XML文件中。

当我打开那个网站时,它会显示一个XMLException:

"0"字符(十六进制值0x30)不能以名称开头。线位置

我搜索并修复为:

SELECT CASE WHEN XMLExists('[a < 0]') THEN 0
            ESLE a
       END AS "Number 1"
FROM <TABLE_NAME>

但仍然得到了例外。我该怎么解决这个问题?谢谢你的帮助!

与SELECT with CASE语句中的数字进行比较时出现XML异常

如果您的XML文件实际上包含WHEN a < 0,那么我不会感到惊讶,因为它不是有效的XML。正如您尝试的修复所表明的那样,这与SQL方面的问题无关。您应该以&lt; 的身份逃离<

SELECT CASE WHEN a &lt; 0 THEN 0

在XML文件中,这就是表示SELECT CASE WHEN a < 0 THEN 0文本的方式。

更好的是,根本不用手工编辑XML。如果该文件是用XML API创建的,它会自动为您进行此转义。