下面的查询中有什么错误选择convert(xml,“< x>”+replace(a.name,“:”,“< /x>< x>”)+“< /x>”)作为来自erecharge的xdim;

qfe3c7zg  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(325)

我要将字符串转换为xml列。。我使用了下面的查询:

Select CONVERT(xml,'<x>' + Replace(A.name,':','</x><x>')+'</x>' ) as xDim from Erecharge;

但它显示了错误的sql语法错误。。我想知道上面的问题是什么
我也试过这个:

Select Cast('<x>' + Replace(A.name,':','</x><x>')+'</x>' as XML) as xDim from Erecharge;
i5desfxk

i5desfxk1#

请查看与mysql服务器版本对应的手册,以获得正确的语法 'XML) as xDim from Erecharge' 这意味着 XML 在这样的表达式中是不正确的:

CAST('foo' AS XML)

根据文档,允许的值 CAST 类型不包括 XML .
此外,使用 + 字符串上的运算符只是一种复杂的方式来呈现零:

mysql> SELECT 'a' + 'b';
+-----------+
| 'a' + 'b' |
+-----------+
|         0 |
+-----------+
1 row in set, 2 warnings (0.00 sec)

你想做什么还不完全清楚。mysql有xml函数,但没有xml数据类型。如果您只想生成一个恰好包含xml代码的字符串,那么您需要 CONCAT() :

mysql> SELECT CONCAT('<date>', CURRENT_TIMESTAMP, '</date>') AS foo;
+----------------------------------+
| foo                              |
+----------------------------------+
| <date>2018-10-12 11:44:29</date> |
+----------------------------------+
1 row in set (0.00 sec)

... 当然,您仍然需要确保尖括号和类似的东西不会破坏xml。 CDATA 可能会有帮助(不知道xml函数,我不熟悉。)

相关问题