mysql - 下面的查询有什么问题 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 服务器版本相对应的手册,以获取在附近使用的正确语法
'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 函数,我不熟悉它们。)
推荐阅读
- python - How can i convert string to Kivy id's value?
- java - Base64编码到解码文件转换问题
- swift - 后台任务结束时更新屏幕字段
- java - 当我在第二个片段中时如何隐藏主片段?
- kubernetes - 列出 Blob 时出现 CEPH S3 异常
- mysql - MYSQL 检查表值是否包含在传递的字符串中
- dependency-injection - MAX 功能没有给我带来我想要的结果
- typescript - 对于定义为对象属性的函数,类型推断无法按预期工作
- git - fork 后在 devOps 上为 git 设置默认存储库
- .net - WebService 使用 TLS1.1,TLS1.2 无法连接到开发服务器,在本地开发中工作