XMLEXISTS 演算�

XMLEXISTSã?¯ã€?SQLã?«ã?¦XMLã‚’å•?ã?„å?ˆã‚?ã?›ã‚‹ã?¨ã??ã?«åˆ©ç”¨ã?§ã??ã‚‹SQL/XML演算å­?ã?§ã?™ã€‚

XMLEXISTS演算��二��引数を�り��。XML�����DerbyXML値��。

æ§‹æ–‡

XMLEXISTS ( xquery文字列リテラル
    PASSING BY REF XML値� [ BY REF ] )
xquery文字列リテラル
文字列ã?®ãƒªãƒ†ãƒ©ãƒ«ã?¨ã?—ã?¦ä¸Žã?ˆã‚‰ã‚Œã‚‹å¿…è¦?ã?Œã?‚りã?¾ã?™ã€‚ã‚‚ã?—引数ã?Œãƒ‘ラメータã?§ã?‚ã?£ã?Ÿã‚Šã€?リテラルã?§ã?ªã?„å¼?ã?§ã?‚ã?£ã?Ÿã‚Šã€?文字列ã?§ã?ªã?„(æ•´æ•°ã?®ã‚ˆã?†ã?ª)リテラルã?§ã?‚ã?£ã?Ÿå ´å?ˆã€?Derbyã?¯ã‚¨ãƒ©ãƒ¼ã‚’挙ã?’ã?¾ã?™ã€‚ xquery文字列リテラルã?¯Apache Xalanã?Œã‚µãƒ?ートã?—ã?¦ã?„ã‚‹XPathå¼?ã?§ã?ªã?‘れã?°ã?ªã‚Šã?¾ã?›ã‚“。Derbyã?¯ã€?XMLå•?å?ˆã?›å¼?を評価ã?™ã‚‹ã?¨ã??常ã?«Apache Xalanを使ã?„ã?¾ã?™ã€‚Xalanã?¯XQueryを完全ã?«ã‚µãƒ?ートã?—ã?ªã?„ã?®ã?§ã€?Derbyã‚‚ã??ã?®åˆ¶ç´„ã‚’å?—ã?‘ã?¾ã?™ã€‚ ã‚‚ã?—Xalanã?Œå¼•æ•°ã?«ä¸Žã?ˆã‚‰ã‚Œã?Ÿå•?å?ˆã?›ã‚’コンパイルã?—ã?¦å®Ÿè¡Œã?§ã??ã?ªã?‹ã?£ã?Ÿå ´å?ˆã€?Xalanã?ŒæŒ™ã?’ã?Ÿä¾‹å¤–ã‚’Derbyã?¯è£œè¶³ã?—ã?¦SQLExceptionã?¨ã?—ã?¦æŠ•ã?’ã?ªã?Šã?—ã?¾ã?™ã€‚ XPathã?Šã‚ˆã?³XQueryå¼?ã?®è©³ç´°ã?«ã?¤ã?„ã?¦ã?¯ã€?次ã?®ã‚¦ã‚§ãƒ–サイトをå?‚ç…§ã?—ã?¦ã??ã? ã?•ã?„。http://www.w3.org/TR/xpathã?Šã‚ˆã?³ã€?http://www.w3.org/TR/xquery/
XML値�
XMLã?®ãƒ‡ãƒ¼ã‚¿å€¤ã?‹ã?¤æ•´å½¢å¼?ã?®SQL/XML文書ã?§ã?ªã?‘れã?°ã?ªã‚Šã?¾ã?›ã‚“。 XML値å¼?ã?¯ãƒ‘ラメータã?§ã?‚ã?£ã?¦ã?¯ã?ªã‚Šã?¾ã?›ã‚“。 Derbyã?¯æš—é»™ã?®æ§‹æ–‡è§£æž?ã‚„XML値ã?®åž‹å¤‰æ?›ã‚’行ã?„ã?¾ã?›ã‚“。従ã?£ã?¦ã€?文字列やã??ã?®ä»–ã?®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—を使ã?†ã?¨ã‚¨ãƒ©ãƒ¼ã?Œç™ºç”Ÿã?—ã?¾ã?™ã€‚ ã‚‚ã?—引数ã?ŒDerby XMLQUERY演算å­?ã?«ã‚ˆã?£ã?¦è¿”ã?•れã?Ÿä¸¦ã?³ã?§ã?‚ã?£ã?Ÿå ´å?ˆã€? ã??ã?®ä¸¦ã?³ã?Œã€?一ã?¤ã?®æ–‡æ›¸ãƒŽãƒ¼ãƒ‰ã?§ã?‚るノードã?®ä¸¦ã?³ã?§ã?‚ã?£ã?Ÿå ´å?ˆã?«ã?®ã?¿ã€?ã??ã?®å¼•æ•°ã?¯è¨±ã?•れã?¾ã?™ã€‚ ã??ã?†ã?§ã?¯ã?ªã?‘れã?°ã€?Derbyã?¯ã‚¨ãƒ©ãƒ¼ã‚’挙ã?’ã?¾ã?™ã€‚
BY REF
çœ?ç•¥å?¯èƒ½ã?ªã?“ã?®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã?«ã?¦ã€?Derbyã?«ã?¦åˆ©ç”¨å?¯èƒ½ã?ªå¼•数渡ã?—ã?®æ–¹æ³•ã?Œè¨˜è¿°ã?•れã?¾ã?™ã€‚ BY REFã?¯æ—¢å®šã?®å¼•数渡ã?—ã?®æ–¹æ³•ã?ªã?®ã?§ã€?XMLEXISTS演算å­?ã?¯ã?“ã?®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã?®æœ‰ç„¡ã?«ã?‹ã?‹ã‚?らã?šå?Œæ§˜ã?«æŒ¯èˆžã?„ã?¾ã?™ã€‚引数渡ã?—ã?®æ–¹æ³•ã?®è©³ç´°ã?«ã?¤ã?„ã?¦ã?¯ã€?SQL/XML仕様をå?‚ç…§ã?—ã?¦ã??ã? ã?•ã?„。

演算���果�他�演算���組����

XMLEXISTS演算å­?ã?®çµ?æžœã?¯ã€?xquery文字列リテラルをXML値å¼?ã?«å¯¾ã?—ã?¦è©•価ã?—ã?Ÿçµ?æžœã?«åŸºã?¥ã??ã€?SQL真å?½å€¤ã?§ã?™ã€‚ XMLEXISTS演算å­?ã?Œè¿”ã?™å€¤ã?¯ã€?
UNKNOWN
XML値��null����場���。
TRUE
�����をxml�値�対��評価���空����ノードや値�並��返��場���。
FALSE
�����をxml�値�対��評価���空�並��返��場���。

XMLEXISTS演算������評価�れ��果を直接�返���ん。����評価�れ��果を直接�得��場��XMLQUERY演算�を使�必���り��。

XMLEXISTS演算å­?ã?®çµ?æžœã?¯SQLã?®çœŸå?½å€¤ã?ªã?®ã?§ã€?真å?½åž‹ã?®é–¢æ•°ã‚’ç½®ã??ã?“ã?¨ã?Œã?§ã??る場所ã?ªã‚‰ä½•処ã?§ã‚‚XMLEXISTS演算å­?を使ã?†ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ã?Ÿã?¨ã?ˆã?°ã€?XMLEXISTS演算å­?を表定義ã?®ãƒ?ェック制約ã?«ä½¿ã?†ã?“ã?¨ã‚„ã€?WHERE節ã?®è¿°éƒ¨ã?«ç½®ã??ã?“ã?¨ã‚‚ã?§ã??ã?¾ã?™ã€‚

例

x_table表ã?«ã?¦ã€?å?„行ã?®xcolã?¨ã?„ã?†XMLã?®åˆ—ã?«ã€?age属性ã?Œ20ã?®studentã?¨ã?„ã?†è¦?ç´ ã?Œã?‚ã‚‹ã?‹ã‚’知るã?«ã?¯æ¬¡ã?®ã‚ˆã?†ã?«æ›¸ã??ã?¾ã?™ã€‚
SELECT id, XMLEXISTS('//student[@age=20]' PASSING BY REF xcol) 
    FROM x_table
x_table表ã?‹ã‚‰ã€?xcolã?¨ã?„ã?†XMLã?®åˆ—ã?Œnullã?§ã?ªã??ã€?ã??ã?®åˆ—ã?®å€¤ã?«/roster/studentã?¨ã?„ã?†è¦?ç´ ã‚’æŒ?ã?¤ã€?å?„行ã?®IDã‚’è¿”ã?™ã?«ã?¯ã?“ã?®æ–‡ã‚’書ã??ã?¾ã?™ã€‚
SELECT id FROM x_table WHERE XMLEXISTS('/roster/student' PASSING BY REF xcol)
x_tableã?¨ã?„ã?†è¡¨ã?«ã?¦ã€?xcolã?¨ã?„ã?†XMLã?®åˆ—ã?«æŒ¿å…¥ã?§ã??ã‚‹XMLã?®å€¤ã‚’制é™?ã?™ã‚‹ã?“ã?¨ã‚‚ã?§ã??ã?¾ã?™ã€‚ã?“ã?®ä¾‹ã?§ã?¯ã€?age属性ã?Œ25よりå°?ã?•ã?„studentè¦?ç´ ã‚’ã€?å°‘ã?ªã??ã?¨ã‚‚一ã?¤æŒ?ã?Ÿã?ªã?‘れã?°ã?ªã‚‰ã?ªã?„ã€?ã?¨ã?„ã?†åˆ¶ç´„を設ã?‘ã?¾ã?™ã€‚ 表を作るã?«ã?¯ã?“ã?®ã‚ˆã?†ã?«æ›¸ã??ã?¾ã?™ã€‚
CREATE TABLE x_table ( id INT, xcol XML CHECK (XMLEXISTS ('//student[@age < 25]' PASSING BY REF xcol)) )

使�方�覚書

Derby��XML�機能を使�場��Apache Xerces�よ��JAXP parser�Apache Xalan�Java�クラスパス�記述�れ��る必���り��。 JAXP parser�る��Xalan�クラスパス�記述�れ������場��XMLEXISTS演算�を利用�る�エラー��り��。