0

我正在学习 MySQL。我的查询如下:
mysql>select extractvalue(1,1111111111111111111);// 19 1。输出:

`+-------------------------------------+
 | extractvalue(1,1111111111111111111) |
 +-------------------------------------+
 | 1111111111111111111                 |
 +-------------------------------------+
1 row in set (0.00 sec)`

但是对于 20 个 1

mysql>select extract(1,11111111111111111111);
+--------------------------------------+
| extractvalue(1,11111111111111111111) |
+--------------------------------------+
| -7335632962598440505                 |
+--------------------------------------+
1 row in set (0.00 sec)

以下向我展示了不同的错误:

mysql> select extractvalue(rand(),5.5.28));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '.28))
' at line 1
mysql> select extractvalue(rand(),version());
ERROR 1105 (HY000): XPATH syntax error: '.28'

有人可以解释一下吗?

4

1 回答 1

0

我试过这些,它似乎工作。

SELECT @rand := RAND();

select extractvalue(1,@rand);

但是,extract似乎不起作用并给出错误。无论哪种方式,我都没有设法使用extractextractvalue包装rand(). 原因可能是extractvalue只返回CDATA。此功能似乎不支持您的申请意图。它用于XPATH

例如

Select allhttp://www.blablabla.com/error.php?id=null 
and extractvalue(rand(),concat(0x3a,(
select concat(0x3a,username,0x3a,password) from users)))

发现这很有趣:参考

于 2012-12-01T14:09:22.010 回答