首页 > 解决方案 > 下面的查询有什么问题 Select CONVERT(xml,'' + 替换(A.name,':','')+'' ) 作为来自 Erecharge 的 xDim;

问题描述

我想将字符串转换为 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;

标签: mysql

解决方案


检查与您的 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 函数,我不熟悉它们。)


推荐阅读