0

私はMySQLを学んでいます。私の質問は次
mysql>select extractvalue(1,1111111111111111111);のとおりです://191。出力:

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

しかし、201の場合

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動作していないようで、エラーが発生します。いずれにせよ、私は を使用しextractたりextractvalueラップしたりすることができませんでしrand()た。理由は、 CDATAextractvalueのみを返す可能性があります。あなたのアプリケーションの意図は、この機能によってサポートされていないようです。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 に答える