【发布时间】:2014-08-18 14:20:55
【问题描述】:
一个表中有 100,000 行,其中包含一个存储大型 XML 块的列,我需要检查该列中是否有某个 XML 标记填充了数据,假设该列称为 test_request 并且 XML 标记是命名为“d”。此外,我想确保 'd' 中的值在 XML 标记中不包含换行符 /n。因此,对于有匹配项的每一行,我想在总计数中加 1。到目前为止,这是我的查询。
SELECT EXTRACTVALUE( UNCOMPRESS(`test__request` ) , count('/a/b/c/d') )
FROM testTable16
WHERE `test_created` > '2014-08-16 10:00:00'
AND `test_created` <= '2014-08-16 10:10:00'
AND `test_client` = 'test2'
AND `test_user` = 'testuser2'
AND UNCOMPRESS( `test__request` ) LIKE '%<testID>test</testID>%'
LIMIT 0 , 30
它不起作用,因为它返回 100,000 行,我显然无法筛选。而且我不确定如何进行 isnt 换行检查。
【问题讨论】:
-
这是mysql还是sql?
-
mysql,抱歉,stackoverflow 告诉我将 SQL 添加为标签是个好主意。
-
作为一个好的经验法则,让您的标签尽可能具体。mysql 不支持 sql 所做的一切,因此需要澄清 :)
-
您的 extractvalue() 选择会产生什么?我们可以看到一些数据吗? :)
-
返回的是前 30 行包含 0(其余的可能包含 0 或 1,关键是我无法搜索所有行太多,这就是为什么我需要总共匹配项)
标签: mysql xml xpath extract-value