![](/img/trans.png)
[英]SQL query executes in MySql Workbench, but not in production
[英]SQL query does not executes because of escaped characters
假设我有这样的sql查询:
SELECT column_name FROM table WHERE columnid <= 5
在orm.xml中定义如下:
<named-query>
<query>
sql query
</query>
</named-query>
环境说,由于<字符,xml格式不正确。 因此,我用谷歌搜索了一下,然后发现,如以下示例所示,我必须转义字符
< = < , > = >
但是当我忽略这些字符时,查询不会执行。 由于转义,这是无效的。 您是否知道如何解决此问题或任何解决方法?
不知道它是否仍然打开,但是-至少-它没有答案:
您不应将XML视为带有多余多余字符的字符串。 将内容放入 XML有一些规则, 从 XML 内部读取值也有一些规则。 您可以轻松地创建一些东西, 看起来像串级XML,而是-如果你的XML IST无效的-你会陷入麻烦。
最重要的例外是-很明显! - <, > and &
,如果不转义,将会打乱标记。
DECLARE @xml XML=N'<root>SELECT column_name FROM table WHERE columnid <= 5</root>';
SELECT @xml.value(N'(/root/text())[1]',N'nvarchar(max)');
您会发现,转义的字符被隐式重新转换。 但是您必须使用适当的工具阅读XML! 。 如果使用字符串方法(如substring
)读取XML,则必须确保重新转义。
有一个-不推荐-解决方法:你可以使用一个CDATA
-section喜欢这里:
DECLARE @xml XML=N'<root><![CDATA[SELECT column_name FROM table WHERE columnid <= 5]]></root>';
SELECT @xml.value(N'(/root/text())[1]',N'nvarchar(max)');
这允许你把文成XML将被采取原样 。 但这已经过时,并且在SQL Server中不直接支持(嗯,有FOR XML EXPLICIT
,它本身已经过时了)。 SQL-Server实际上会自动将上面没有CDATA
存储为转义字符串。 在语义上是相同的...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.