mysql には、xml を操作するための組み込み関数があります。これらはそれぞれ ExtractValue() 関数と UpdateXML() 関数です。
構文:
EXTRACTVALUE (fiedname, XPathstring);
最初のパラメーター: fiedname は、テーブル内のフィールド名である文字列形式です。 2 番目のパラメーター: XPathstring (Xpath 形式の文字列) は、Xpath 構文を理解していなくてもわかります。オンラインでチュートリアルを見つけてください。関数: ターゲット XML からクエリされた値を含む文字列を返します
UPDATEXML (fiedname, XPathstring, new_value); 最初のパラメータ: fiedname は文字列形式であり、これはテーブル内のフィールド名です
。3 番目のパラメータ: new_value、文字列形式、見つかった修飾されたデータを置き換えます 機能: ドキュメント内の修飾されたノードの値を変更します
推奨される関連する mysql ビデオ チュートリアル: "mysql チュートリアル"
まず、1 を作成します。テストテーブル。
CREATE TABLE `testtable` ( `testxml` text ) ENGINE=InnoDB DEFAULT CHARSET=latin1
2. 次に、テストテーブルにレコードを追加します。 XML形式で記録されます。
3. まず EXTRACTVALUE 関数を使用して、Zhang San という名前のノードの内容を見つけます。以下の出力ボックスで見つかった Zhang San ノードの内容を確認できます。xpath 形式は次のとおりです
extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'
4。次に、クラスの下にあるすべての名前ノードの値をクエリする必要があります。ノード。
extractvalue(testxml,'/Student/Class/Name'
5. 次に、updatexml 関数を使用して、xml のノードの内容を変更します。
extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'), Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','updatename') ,把zhangsan节点内容换为updatename。
6. 上記の結果から、updatexml を使用した後、xml 構造の名前ノードが 1 つ減っていることがわかります。置換するときに、更新された値をノードに追加するだけで済みます。
extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'), Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','updatename ')
7. Update ステートメントを使用してデータベースの内容を更新します。
UPDATE testtableSET testxml= Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','<Name>updatename</Name>')
注意事項
UpdateXml を使用すると、チェックされたフィールドの内容が変更されただけであり、データベースを更新する必要がある場合は、update ステートメントを使用して更新する必要があります
。
以上がMySQL データベースでの XML のクエリと操作の経験を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。