mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 06:22:28 +01:00
bcc72ad04f
xml.result, xml.test: Adding test case. item_xmlfunc.cc: Fixed that the "!" character written at the end was ignored. Now if we try to scan "!=", and if "!" is not followed by "=", we rollback lex scanner back to "!" token, so the parser will start to check the next rule from the "!" character again. Previously parser started from the next character, which was EOF in the example in xml.test, which led to query being successfully parsed, instead of producing a syntax error.
548 lines
18 KiB
Text
548 lines
18 KiB
Text
SET @xml='<a aa1="aa1" aa2="aa2">a1<b ba1="ba1">b1<c>c1</c>b2</b>a2</a>';
|
|
SELECT extractValue(@xml,'/a');
|
|
extractValue(@xml,'/a')
|
|
a1 a2
|
|
SELECT extractValue(@xml,'/a/b');
|
|
extractValue(@xml,'/a/b')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'/a/b/c');
|
|
extractValue(@xml,'/a/b/c')
|
|
c1
|
|
SELECT extractValue(@xml,'/a/@aa1');
|
|
extractValue(@xml,'/a/@aa1')
|
|
aa1
|
|
SELECT extractValue(@xml,'/a/@aa2');
|
|
extractValue(@xml,'/a/@aa2')
|
|
aa2
|
|
SELECT extractValue(@xml,'/a/@*');
|
|
extractValue(@xml,'/a/@*')
|
|
aa1 aa2
|
|
SELECT extractValue(@xml,'//@ba1');
|
|
extractValue(@xml,'//@ba1')
|
|
ba1
|
|
SELECT extractValue(@xml,'//a');
|
|
extractValue(@xml,'//a')
|
|
a1 a2
|
|
SELECT extractValue(@xml,'//b');
|
|
extractValue(@xml,'//b')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//c');
|
|
extractValue(@xml,'//c')
|
|
c1
|
|
SELECT extractValue(@xml,'/a//b');
|
|
extractValue(@xml,'/a//b')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'/a//c');
|
|
extractValue(@xml,'/a//c')
|
|
c1
|
|
SELECT extractValue(@xml,'//*');
|
|
extractValue(@xml,'//*')
|
|
a1 b1 c1 b2 a2
|
|
SELECT extractValue(@xml,'/a//*');
|
|
extractValue(@xml,'/a//*')
|
|
b1 c1 b2
|
|
SELECT extractValue(@xml,'/./a');
|
|
extractValue(@xml,'/./a')
|
|
a1 a2
|
|
SELECT extractValue(@xml,'/a/b/.');
|
|
extractValue(@xml,'/a/b/.')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'/a/b/..');
|
|
extractValue(@xml,'/a/b/..')
|
|
a1 a2
|
|
SELECT extractValue(@xml,'/a/b/../@aa1');
|
|
extractValue(@xml,'/a/b/../@aa1')
|
|
aa1
|
|
SELECT extractValue(@xml,'/*');
|
|
extractValue(@xml,'/*')
|
|
a1 a2
|
|
SELECT extractValue(@xml,'/*/*');
|
|
extractValue(@xml,'/*/*')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'/*/*/*');
|
|
extractValue(@xml,'/*/*/*')
|
|
c1
|
|
SELECT extractValue(@xml,'/a/child::*');
|
|
extractValue(@xml,'/a/child::*')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'/a/descendant::*');
|
|
extractValue(@xml,'/a/descendant::*')
|
|
b1 c1 b2
|
|
SELECT extractValue(@xml,'/a/descendant-or-self::*');
|
|
extractValue(@xml,'/a/descendant-or-self::*')
|
|
a1 b1 c1 b2 a2
|
|
SELECT extractValue(@xml,'/a/attribute::*');
|
|
extractValue(@xml,'/a/attribute::*')
|
|
aa1 aa2
|
|
SELECT extractValue(@xml,'/a/b/c/parent::*');
|
|
extractValue(@xml,'/a/b/c/parent::*')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'/a/b/c/ancestor::*');
|
|
extractValue(@xml,'/a/b/c/ancestor::*')
|
|
a1 b1 b2 a2
|
|
SELECT extractValue(@xml,'/a/b/c/ancestor-or-self::*');
|
|
extractValue(@xml,'/a/b/c/ancestor-or-self::*')
|
|
a1 b1 c1 b2 a2
|
|
SELECT extractValue(@xml,'/descendant-or-self::*');
|
|
extractValue(@xml,'/descendant-or-self::*')
|
|
a1 b1 c1 b2 a2
|
|
SET @xml='<a>a11<b ba="ba11" ba="ba12">b11</b><b ba="ba21" ba="ba22">b21<c>c1</c>b22</b>a12</a>';
|
|
SELECT extractValue(@xml,'/a/b/c/ancestor-or-self::*');
|
|
extractValue(@xml,'/a/b/c/ancestor-or-self::*')
|
|
a11 b21 c1 b22 a12
|
|
SELECT extractValue(@xml,'//@ba');
|
|
extractValue(@xml,'//@ba')
|
|
ba11 ba12 ba21 ba22
|
|
SET @xml='<a><b>b</b><c>c</c></a>';
|
|
SELECT extractValue(@xml,'/a/b');
|
|
extractValue(@xml,'/a/b')
|
|
b
|
|
SELECT extractValue(@xml,'/a/c');
|
|
extractValue(@xml,'/a/c')
|
|
c
|
|
SELECT extractValue(@xml,'/a/child::b');
|
|
extractValue(@xml,'/a/child::b')
|
|
b
|
|
SELECT extractValue(@xml,'/a/child::c');
|
|
extractValue(@xml,'/a/child::c')
|
|
c
|
|
SET @xml='<a><b>b1</b><c>c1</c><b>b2</b><c>c2</c></a>';
|
|
SELECT extractValue(@xml,'/a/b[1]');
|
|
extractValue(@xml,'/a/b[1]')
|
|
b1
|
|
SELECT extractValue(@xml,'/a/b[2]');
|
|
extractValue(@xml,'/a/b[2]')
|
|
b2
|
|
SELECT extractValue(@xml,'/a/c[1]');
|
|
extractValue(@xml,'/a/c[1]')
|
|
c1
|
|
SELECT extractValue(@xml,'/a/c[2]');
|
|
extractValue(@xml,'/a/c[2]')
|
|
c2
|
|
SET @xml='<a><b x="xb1" x="xb2"/><c x="xc1" x="xc2"/></a>';
|
|
SELECT extractValue(@xml,'/a//@x');
|
|
extractValue(@xml,'/a//@x')
|
|
xb1 xb2 xc1 xc2
|
|
SELECT extractValue(@xml,'/a//@x[1]');
|
|
extractValue(@xml,'/a//@x[1]')
|
|
xb1 xc1
|
|
SELECT extractValue(@xml,'/a//@x[2]');
|
|
extractValue(@xml,'/a//@x[2]')
|
|
xb2 xc2
|
|
SET @xml='<a><b>b1</b><b>b2</b><c><b>c1b1</b><b>c1b2</b></c><c><b>c2b1</c></b>/a>';
|
|
SELECT extractValue(@xml,'//b[1]');
|
|
extractValue(@xml,'//b[1]')
|
|
b1 c1b1 c2b1
|
|
SELECT extractValue(@xml,'/descendant::b[1]');
|
|
extractValue(@xml,'/descendant::b[1]')
|
|
b1
|
|
SET @xml='<a><b>b1</b><b>b2</b></a>';
|
|
SELECT extractValue(@xml,'/a/b[1+0]');
|
|
extractValue(@xml,'/a/b[1+0]')
|
|
b1
|
|
SELECT extractValue(@xml,'/a/b[1*1]');
|
|
extractValue(@xml,'/a/b[1*1]')
|
|
b1
|
|
SELECT extractValue(@xml,'/a/b[--1]');
|
|
extractValue(@xml,'/a/b[--1]')
|
|
b1
|
|
SELECT extractValue(@xml,'/a/b[2*1-1]');
|
|
extractValue(@xml,'/a/b[2*1-1]')
|
|
b1
|
|
SELECT extractValue(@xml,'/a/b[1+1]');
|
|
extractValue(@xml,'/a/b[1+1]')
|
|
b2
|
|
SELECT extractValue(@xml,'/a/b[1*2]');
|
|
extractValue(@xml,'/a/b[1*2]')
|
|
b2
|
|
SELECT extractValue(@xml,'/a/b[--2]');
|
|
extractValue(@xml,'/a/b[--2]')
|
|
b2
|
|
SELECT extractValue(@xml,'/a/b[1*(3-1)]');
|
|
extractValue(@xml,'/a/b[1*(3-1)]')
|
|
b2
|
|
SELECT extractValue(@xml,'//*[1=1]');
|
|
extractValue(@xml,'//*[1=1]')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//*[1!=1]');
|
|
extractValue(@xml,'//*[1!=1]')
|
|
|
|
SELECT extractValue(@xml,'//*[1>1]');
|
|
extractValue(@xml,'//*[1>1]')
|
|
|
|
SELECT extractValue(@xml,'//*[2>1]');
|
|
extractValue(@xml,'//*[2>1]')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//*[1>2]');
|
|
extractValue(@xml,'//*[1>2]')
|
|
|
|
SELECT extractValue(@xml,'//*[1>=1]');
|
|
extractValue(@xml,'//*[1>=1]')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//*[2>=1]');
|
|
extractValue(@xml,'//*[2>=1]')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//*[1>=2]');
|
|
extractValue(@xml,'//*[1>=2]')
|
|
|
|
SELECT extractValue(@xml,'//*[1<1]');
|
|
extractValue(@xml,'//*[1<1]')
|
|
|
|
SELECT extractValue(@xml,'//*[2<1]');
|
|
extractValue(@xml,'//*[2<1]')
|
|
|
|
SELECT extractValue(@xml,'//*[1<2]');
|
|
extractValue(@xml,'//*[1<2]')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//*[1<=1]');
|
|
extractValue(@xml,'//*[1<=1]')
|
|
b1 b2
|
|
SELECT extractValue(@xml,'//*[2<=1]');
|
|
extractValue(@xml,'//*[2<=1]')
|
|
|
|
SELECT extractValue(@xml,'//*[1<=2]');
|
|
extractValue(@xml,'//*[1<=2]')
|
|
b1 b2
|
|
SET @xml='<a><b>b11<c>c11</c></b><b>b21<c>c21</c></b></a>';
|
|
SELECT extractValue(@xml,'/a/b[c="c11"]');
|
|
extractValue(@xml,'/a/b[c="c11"]')
|
|
b11
|
|
SELECT extractValue(@xml,'/a/b[c="c21"]');
|
|
extractValue(@xml,'/a/b[c="c21"]')
|
|
b21
|
|
SET @xml='<a><b c="c11">b11</b><b c="c21">b21</b></a>';
|
|
SELECT extractValue(@xml,'/a/b[@c="c11"]');
|
|
extractValue(@xml,'/a/b[@c="c11"]')
|
|
b11
|
|
SELECT extractValue(@xml,'/a/b[@c="c21"]');
|
|
extractValue(@xml,'/a/b[@c="c21"]')
|
|
b21
|
|
SET @xml='<a>a1<b c="c11">b11<d>d11</d></b><b c="c21">b21<d>d21</d></b></a>';
|
|
SELECT extractValue(@xml, '/a/b[@c="c11"]/d');
|
|
extractValue(@xml, '/a/b[@c="c11"]/d')
|
|
d11
|
|
SELECT extractValue(@xml, '/a/b[@c="c21"]/d');
|
|
extractValue(@xml, '/a/b[@c="c21"]/d')
|
|
d21
|
|
SELECT extractValue(@xml, '/a/b[d="d11"]/@c');
|
|
extractValue(@xml, '/a/b[d="d11"]/@c')
|
|
c11
|
|
SELECT extractValue(@xml, '/a/b[d="d21"]/@c');
|
|
extractValue(@xml, '/a/b[d="d21"]/@c')
|
|
c21
|
|
SELECT extractValue(@xml, '/a[b="b11"]');
|
|
extractValue(@xml, '/a[b="b11"]')
|
|
a1
|
|
SELECT extractValue(@xml, '/a[b/@c="c11"]');
|
|
extractValue(@xml, '/a[b/@c="c11"]')
|
|
a1
|
|
SELECT extractValue(@xml, '/a[b/d="d11"]');
|
|
extractValue(@xml, '/a[b/d="d11"]')
|
|
a1
|
|
SELECT extractValue(@xml, '/a[/a/b="b11"]');
|
|
extractValue(@xml, '/a[/a/b="b11"]')
|
|
a1
|
|
SELECT extractValue(@xml, '/a[/a/b/@c="c11"]');
|
|
extractValue(@xml, '/a[/a/b/@c="c11"]')
|
|
a1
|
|
SELECT extractValue(@xml, '/a[/a/b/d="d11"]');
|
|
extractValue(@xml, '/a[/a/b/d="d11"]')
|
|
a1
|
|
SELECT extractValue('<a>a</a>', '/a[false()]');
|
|
extractValue('<a>a</a>', '/a[false()]')
|
|
|
|
SELECT extractValue('<a>a</a>', '/a[true()]');
|
|
extractValue('<a>a</a>', '/a[true()]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[not(false())]');
|
|
extractValue('<a>a</a>', '/a[not(false())]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[not(true())]');
|
|
extractValue('<a>a</a>', '/a[not(true())]')
|
|
|
|
SELECT extractValue('<a>a</a>', '/a[true() and true()]');
|
|
extractValue('<a>a</a>', '/a[true() and true()]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[true() and false()]');
|
|
extractValue('<a>a</a>', '/a[true() and false()]')
|
|
|
|
SELECT extractValue('<a>a</a>', '/a[false()and false()]');
|
|
extractValue('<a>a</a>', '/a[false()and false()]')
|
|
|
|
SELECT extractValue('<a>a</a>', '/a[false()and true()]');
|
|
extractValue('<a>a</a>', '/a[false()and true()]')
|
|
|
|
SELECT extractValue('<a>a</a>', '/a[true() or true()]');
|
|
extractValue('<a>a</a>', '/a[true() or true()]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[true() or false()]');
|
|
extractValue('<a>a</a>', '/a[true() or false()]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[false()or false()]');
|
|
extractValue('<a>a</a>', '/a[false()or false()]')
|
|
|
|
SELECT extractValue('<a>a</a>', '/a[false()or true()]');
|
|
extractValue('<a>a</a>', '/a[false()or true()]')
|
|
a
|
|
SET @xml='<a>ab<b c="c" c="e">b1</b><b c="d">b2</b><b c="f" c="e">b3</b></a>';
|
|
select extractValue(@xml,'/a/b[@c="c"]');
|
|
extractValue(@xml,'/a/b[@c="c"]')
|
|
b1
|
|
select extractValue(@xml,'/a/b[@c="d"]');
|
|
extractValue(@xml,'/a/b[@c="d"]')
|
|
b2
|
|
select extractValue(@xml,'/a/b[@c="e"]');
|
|
extractValue(@xml,'/a/b[@c="e"]')
|
|
b1 b3
|
|
select extractValue(@xml,'/a/b[not(@c="e")]');
|
|
extractValue(@xml,'/a/b[not(@c="e")]')
|
|
b2
|
|
select extractValue(@xml,'/a/b[@c!="e"]');
|
|
extractValue(@xml,'/a/b[@c!="e"]')
|
|
b1 b2 b3
|
|
select extractValue(@xml,'/a/b[@c="c" or @c="d"]');
|
|
extractValue(@xml,'/a/b[@c="c" or @c="d"]')
|
|
b1 b2
|
|
select extractValue(@xml,'/a/b[@c="c" and @c="e"]');
|
|
extractValue(@xml,'/a/b[@c="c" and @c="e"]')
|
|
b1
|
|
SET @xml='<a><b c="c" d="d">b1</b><b d="d" e="e">b2</b></a>';
|
|
select extractValue(@xml,'/a/b[@c]');
|
|
extractValue(@xml,'/a/b[@c]')
|
|
b1
|
|
select extractValue(@xml,'/a/b[@d]');
|
|
extractValue(@xml,'/a/b[@d]')
|
|
b1 b2
|
|
select extractValue(@xml,'/a/b[@e]');
|
|
extractValue(@xml,'/a/b[@e]')
|
|
b2
|
|
select extractValue(@xml,'/a/b[not(@c)]');
|
|
extractValue(@xml,'/a/b[not(@c)]')
|
|
b2
|
|
select extractValue(@xml,'/a/b[not(@d)]');
|
|
extractValue(@xml,'/a/b[not(@d)]')
|
|
|
|
select extractValue(@xml,'/a/b[not(@e)]');
|
|
extractValue(@xml,'/a/b[not(@e)]')
|
|
b1
|
|
select extractValue(@xml, '/a/b[boolean(@c) or boolean(@d)]');
|
|
extractValue(@xml, '/a/b[boolean(@c) or boolean(@d)]')
|
|
b1 b2
|
|
select extractValue(@xml, '/a/b[boolean(@c) or boolean(@e)]');
|
|
extractValue(@xml, '/a/b[boolean(@c) or boolean(@e)]')
|
|
b1 b2
|
|
select extractValue(@xml, '/a/b[boolean(@d) or boolean(@e)]');
|
|
extractValue(@xml, '/a/b[boolean(@d) or boolean(@e)]')
|
|
b1 b2
|
|
select extractValue(@xml, '/a/b[boolean(@c) and boolean(@d)]');
|
|
extractValue(@xml, '/a/b[boolean(@c) and boolean(@d)]')
|
|
b1
|
|
select extractValue(@xml, '/a/b[boolean(@c) and boolean(@e)]');
|
|
extractValue(@xml, '/a/b[boolean(@c) and boolean(@e)]')
|
|
|
|
select extractValue(@xml, '/a/b[boolean(@d) and boolean(@e)]');
|
|
extractValue(@xml, '/a/b[boolean(@d) and boolean(@e)]')
|
|
b2
|
|
select extractValue(@xml, '/a/b[@c or @d]');
|
|
extractValue(@xml, '/a/b[@c or @d]')
|
|
b1 b2
|
|
select extractValue(@xml, '/a/b[@c or @e]');
|
|
extractValue(@xml, '/a/b[@c or @e]')
|
|
b1 b2
|
|
select extractValue(@xml, '/a/b[@d or @e]');
|
|
extractValue(@xml, '/a/b[@d or @e]')
|
|
b1 b2
|
|
select extractValue(@xml, '/a/b[@c and @d]');
|
|
extractValue(@xml, '/a/b[@c and @d]')
|
|
b1
|
|
select extractValue(@xml, '/a/b[@c and @e]');
|
|
extractValue(@xml, '/a/b[@c and @e]')
|
|
|
|
select extractValue(@xml, '/a/b[@d and @e]');
|
|
extractValue(@xml, '/a/b[@d and @e]')
|
|
b2
|
|
SET @xml='<a><b c="c">b1</b><b>b2</b></a>';
|
|
SELECT extractValue(@xml,'/a/b[@*]');
|
|
extractValue(@xml,'/a/b[@*]')
|
|
b1
|
|
SELECT extractValue(@xml,'/a/b[not(@*)]');
|
|
extractValue(@xml,'/a/b[not(@*)]')
|
|
b2
|
|
SELECT extractValue('<a>a</a>', '/a[ceiling(3.1)=4]');
|
|
extractValue('<a>a</a>', '/a[ceiling(3.1)=4]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[floor(3.1)=3]');
|
|
extractValue('<a>a</a>', '/a[floor(3.1)=3]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[round(3.1)=3]');
|
|
extractValue('<a>a</a>', '/a[round(3.1)=3]')
|
|
a
|
|
SELECT extractValue('<a>a</a>', '/a[round(3.8)=4]');
|
|
extractValue('<a>a</a>', '/a[round(3.8)=4]')
|
|
a
|
|
SELECT extractValue('<a><b>b</b><c>c</c></a>', '/a/b | /a/c');
|
|
extractValue('<a><b>b</b><c>c</c></a>', '/a/b | /a/c')
|
|
b c
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=1]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=1]')
|
|
b1
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=2]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=2]')
|
|
b2
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3]')
|
|
b3
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[1=position()]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[1=position()]')
|
|
b1
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2=position()]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2=position()]')
|
|
b2
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[3=position()]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[3=position()]')
|
|
b3
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2>=position()]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2>=position()]')
|
|
b1 b2
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2<=position()]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2<=position()]')
|
|
b2 b3
|
|
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3 or position()=2]');
|
|
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3 or position()=2]')
|
|
b2 b3
|
|
SELECT extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=0]');
|
|
extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=0]')
|
|
a2
|
|
SELECT extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=1]');
|
|
extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=1]')
|
|
a1
|
|
select extractValue('<a>a1<b ba="1" ba="2">b1</b><b>b2</b>4</a>','/a/b[sum(@ba)=3]');
|
|
extractValue('<a>a1<b ba="1" ba="2">b1</b><b>b2</b>4</a>','/a/b[sum(@ba)=3]')
|
|
b1
|
|
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[1]');
|
|
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[1]')
|
|
b1
|
|
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[boolean(1)]');
|
|
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[boolean(1)]')
|
|
b1 b2
|
|
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[true()]');
|
|
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[true()]')
|
|
b1 b2
|
|
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[number(true())]');
|
|
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[number(true())]')
|
|
b1
|
|
select extractValue('<a>ab</a>','/a[contains("abc","b")]');
|
|
extractValue('<a>ab</a>','/a[contains("abc","b")]')
|
|
ab
|
|
select extractValue('<a>ab</a>','/a[contains(.,"a")]');
|
|
extractValue('<a>ab</a>','/a[contains(.,"a")]')
|
|
ab
|
|
select extractValue('<a>ab</a>','/a[contains(.,"b")]');
|
|
extractValue('<a>ab</a>','/a[contains(.,"b")]')
|
|
ab
|
|
select extractValue('<a>ab</a>','/a[contains(.,"c")]');
|
|
extractValue('<a>ab</a>','/a[contains(.,"c")]')
|
|
|
|
select extractValue('<a b="1">ab</a>','/a[concat(@b,"2")="12"]');
|
|
extractValue('<a b="1">ab</a>','/a[concat(@b,"2")="12"]')
|
|
ab
|
|
SET @xml='<a b="11" b="12" b="21" b="22">ab</a>';
|
|
select extractValue(@xml, '/a/@b[substring(.,2)="1"]');
|
|
extractValue(@xml, '/a/@b[substring(.,2)="1"]')
|
|
11 21
|
|
select extractValue(@xml, '/a/@b[substring(.,2)="2"]');
|
|
extractValue(@xml, '/a/@b[substring(.,2)="2"]')
|
|
12 22
|
|
select extractValue(@xml, '/a/@b[substring(.,1,1)="1"]');
|
|
extractValue(@xml, '/a/@b[substring(.,1,1)="1"]')
|
|
11 12
|
|
select extractValue(@xml, '/a/@b[substring(.,1,1)="2"]');
|
|
extractValue(@xml, '/a/@b[substring(.,1,1)="2"]')
|
|
21 22
|
|
select extractValue(@xml, '/a/@b[substring(.,2,1)="1"]');
|
|
extractValue(@xml, '/a/@b[substring(.,2,1)="1"]')
|
|
11 21
|
|
select extractValue(@xml, '/a/@b[substring(.,2,1)="2"]');
|
|
extractValue(@xml, '/a/@b[substring(.,2,1)="2"]')
|
|
12 22
|
|
SET @xml='<a b="b11" b="b12" b="b21" b="22"/>';
|
|
select extractValue(@xml,'/a/@b');
|
|
extractValue(@xml,'/a/@b')
|
|
b11 b12 b21 22
|
|
select extractValue(@xml,'/a/@b[contains(.,"1")]');
|
|
extractValue(@xml,'/a/@b[contains(.,"1")]')
|
|
b11 b12 b21
|
|
select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]');
|
|
extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]')
|
|
b12 b21
|
|
select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]');
|
|
extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]')
|
|
b21
|
|
SET @xml='<a>a1<b>b1<c>c1</c>b2</b>a2</a>';
|
|
select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','+++++++++');
|
|
UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','+++++++++')
|
|
<a>a1<b>b1+++++++++b2</b>a2</a>
|
|
select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1>+++++++++</c1>');
|
|
UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1>+++++++++</c1>')
|
|
<a>a1<b>b1<c1>+++++++++</c1>b2</b>a2</a>
|
|
select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1/>');
|
|
UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1/>')
|
|
<a>a1<b>b1<c1/>b2</b>a2</a>
|
|
SET @xml='<a><b>bb</b></a>';
|
|
select UpdateXML(@xml, '/a/b', '<b>ccc</b>');
|
|
UpdateXML(@xml, '/a/b', '<b>ccc</b>')
|
|
<a><b>ccc</b></a>
|
|
SET @xml='<a aa1="aa1" aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>';
|
|
select UpdateXML(@xml, '/a/b', '<b>ccc</b>');
|
|
UpdateXML(@xml, '/a/b', '<b>ccc</b>')
|
|
<a aa1="aa1" aa2="aa2"><b>ccc</b></a>
|
|
select UpdateXML(@xml, '/a/@aa1', '');
|
|
UpdateXML(@xml, '/a/@aa1', '')
|
|
<a aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>
|
|
select UpdateXML(@xml, '/a/@aa1', 'aa3="aa3"');
|
|
UpdateXML(@xml, '/a/@aa1', 'aa3="aa3"')
|
|
<a aa3="aa3" aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>
|
|
select UpdateXML(@xml, '/a/@aa2', '');
|
|
UpdateXML(@xml, '/a/@aa2', '')
|
|
<a aa1="aa1" ><b bb1="bb1" bb2="bb2">bb</b></a>
|
|
select UpdateXML(@xml, '/a/@aa2', 'aa3="aa3"');
|
|
UpdateXML(@xml, '/a/@aa2', 'aa3="aa3"')
|
|
<a aa1="aa1" aa3="aa3"><b bb1="bb1" bb2="bb2">bb</b></a>
|
|
select UpdateXML(@xml, '/a/b/@bb1', '');
|
|
UpdateXML(@xml, '/a/b/@bb1', '')
|
|
<a aa1="aa1" aa2="aa2"><b bb2="bb2">bb</b></a>
|
|
select UpdateXML(@xml, '/a/b/@bb1', 'bb3="bb3"');
|
|
UpdateXML(@xml, '/a/b/@bb1', 'bb3="bb3"')
|
|
<a aa1="aa1" aa2="aa2"><b bb3="bb3" bb2="bb2">bb</b></a>
|
|
select UpdateXML(@xml, '/a/b/@bb2', '');
|
|
UpdateXML(@xml, '/a/b/@bb2', '')
|
|
<a aa1="aa1" aa2="aa2"><b bb1="bb1" >bb</b></a>
|
|
select UpdateXML(@xml, '/a/b/@bb2', 'bb3="bb3"');
|
|
UpdateXML(@xml, '/a/b/@bb2', 'bb3="bb3"')
|
|
<a aa1="aa1" aa2="aa2"><b bb1="bb1" bb3="bb3">bb</b></a>
|
|
SET @xml= '<order><clerk>lesser wombat</clerk></order>';
|
|
select extractvalue(@xml,'order/clerk');
|
|
extractvalue(@xml,'order/clerk')
|
|
lesser wombat
|
|
select extractvalue(@xml,'/order/clerk');
|
|
extractvalue(@xml,'/order/clerk')
|
|
lesser wombat
|
|
select extractvalue('<a><b>B</b></a>','/a|/b');
|
|
extractvalue('<a><b>B</b></a>','/a|/b')
|
|
|
|
select extractvalue('<a><b>B</b></a>','/a|b');
|
|
extractvalue('<a><b>B</b></a>','/a|b')
|
|
|
|
select extractvalue('<a>a<b>B</b></a>','/a|/b');
|
|
extractvalue('<a>a<b>B</b></a>','/a|/b')
|
|
a
|
|
select extractvalue('<a>a<b>B</b></a>','/a|b');
|
|
extractvalue('<a>a<b>B</b></a>','/a|b')
|
|
a
|
|
select extractvalue('<a>a<b>B</b></a>','a|/b');
|
|
extractvalue('<a>a<b>B</b></a>','a|/b')
|
|
a
|
|
select extractvalue('<a>A</a>','/<a>');
|
|
ERROR HY000: XPATH syntax error: '>'
|
|
select extractvalue('<a><b>b</b><b!>b!</b!></a>','//b!');
|
|
ERROR HY000: XPATH syntax error: '!'
|