sql来设置xml值
我是mySql的新手。 我正在尝试替换表的xml列中的值 我的选择方法有效sql来设置xml值,sql,mysql,xml,Sql,Mysql,Xml,我是mySql的新手。 我正在尝试替换表的xml列中的值 我的选择方法有效 SELECT * FROM `comics` WHERE ExtractValue(xml,'comic/pageNumber') = 6 我的替换方法没有。我已经搜索了一段时间正确的语法了 SET xml.modify( replace value of ('comic/pageNumber') with 5 ) 一些背景: 当我删除漫画页面时,会出现这种情况 它在页码上留下了一个空白,之后我会: 反复阅读所有的漫
SELECT * FROM `comics` WHERE ExtractValue(xml,'comic/pageNumber') = 6
我的替换方法没有。我已经搜索了一段时间正确的语法了
SET xml.modify(
replace value of ('comic/pageNumber') with 5
)
一些背景:
当我删除漫画页面时,会出现这种情况
它在页码上留下了一个空白,之后我会:
反复阅读所有的漫画,并删除页码中的任何空白
或
遍历所有页码大于已删除页面的漫画,并将其页码减少1。您最好将字段实际存储在表中,而不是只存储一个包含xml的字段。那么下面的方法就行了。否则,使用关系数据库就没有什么意义了
BEGIN;
DELETE FROM `comics`
WHERE `comicID` = :id AND `pageNumber` = :page;
UPDATE `comics` SET `pageNumber` = `pageNumber` - 1
WHERE `comicID` = :id AND `pageNumber` > :page;
COMMIT;
怎么样
UPDATE comics
SET xml = UpdateXML(xml,'comic/pageNumber', '<pageNumber>5</pageNumber>')
WHERE ExtractValue(xml,'comic/pageNumber') = 6
更新漫画
设置xml=UpdateXML(xml,'comic/pageNumber','5')
其中ExtractValue(xml,'comic/pageNumber')=6
在MySQL 5.1版上测试
UPDATE `comics`
SET xml = UpdateXML(xml,
'comic/pageNumber',
concat('<pageNumber>',(ExtractValue(xml,'comic/pageNumber')+1),'</pageNumber>'))
WHERE ExtractValue(xml,'comic/pageNumber') >= 1
更新`漫画`
设置xml=UpdateXML(xml,
“漫画/页码”,
concat(“”,(提取值(xml,'comic/pageNumber')+1,“”))
其中ExtractValue(xml,'comic/pageNumber')>=1
对不起,我非常热衷于用xml存储所有内容。@SketchBookGames-那就不要使用MySQL。你能在xml列中至少发布一个表示值的xml片段吗?