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/self::*'); extractValue(@xml,'/a/self::*') a1 a2 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: '!' select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant::*'); extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant::*') B C select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/self::*'); extractvalue('<a>A<b>B<c>C</c></b></a>','/a/self::*') A select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*'); extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*') A B C select extractvalue('<A_B>A</A_B>','/A_B'); extractvalue('<A_B>A</A_B>','/A_B') A select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]') B1 B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]') B1 B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]') B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()-1]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()-1]') B1 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=1]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=1]') select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]') B1 B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]') B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]') B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)-1]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)-1]') B1 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=1]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=1]') select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]') B1 B2 select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]'); extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]') B2 select extractvalue('<a>Jack</a>','/a[contains(../a,"J")]'); extractvalue('<a>Jack</a>','/a[contains(../a,"J")]') Jack select extractvalue('<a>Jack</a>','/a[contains(../a,"j")]'); extractvalue('<a>Jack</a>','/a[contains(../a,"j")]') Jack select extractvalue('<a>Jack</a>','/a[contains(../a,"j")]' collate latin1_bin); extractvalue('<a>Jack</a>','/a[contains(../a,"j")]' collate latin1_bin) select extractvalue('<a>Jack</a>' collate latin1_bin,'/a[contains(../a,"j")]'); extractvalue('<a>Jack</a>' collate latin1_bin,'/a[contains(../a,"j")]')