XMLフィールドに対するSQL操作のサンプルコードの詳細説明(図)
T-SqlXml データを操作する
1. はじめに
SQL Server 2005 では、XML と呼ばれるネイティブ データ型が導入されました。ユーザーは、リレーショナル列に加えて、XML 型の列を 1 つ以上含むテーブルを作成できます。また、変数とパラメーターも使用できます。ドキュメントの順序や再帰構造などの XML モデル機能をより適切にサポートするために、XML 値はラージ バイナリ オブジェクト (BLOB) として内部形式で保存されます。
ユーザーが XML データをデータベースに保存する場合、SQL Server はその文字列を XML 型に自動的に変換してデータベースに保存します。
SQL Server は XML フィールドをサポートしているため、T-SQL ステートメントは、SQL Server での XML フィールドの使用を調整するための多数の XML 操作関数も提供します。この記事では主に、SQL ステートメントを使用して XML を操作する方法について説明します。
2. XML フィールドを定義する
データベース設計中に、テーブル デザイナーでフィールドを XML タイプとして簡単に定義できます。 XML フィールドは主キーまたはインデックス キーとして使用できないことに注意してください。同様に、SQL ステートメントを使用して、XML フィールドを使用してデータ テーブルを作成することもできます。次のステートメントは、整数の主キー "pk" と型なしの XML 列 "xCol" を持つ "docs" という名前のテーブルを作成します。 XML 型はテーブルで使用されますが、ストアド プロシージャ、トランザクション、関数などでも使用できます。 SQL ステートメントを使用して XML タイプのデータを定義し、それに値を割り当てて、XML 操作の最初のステップを完了しましょう:
CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)
3. クエリ操作
XML タイプのデータを定義した後、最も一般的なのは使用されるのはクエリ操作です。SQL ステートメントを使用してクエリ操作を実行する方法を紹介します。
T-Sqlでは、XML型データをクエリする関数としてquery(xquery)とvalue(xquery, dataType)の2つが用意されており、このうちquery(xquery)はラベル付きのデータを取得し、value(xquery, dataType)は取得します。タグの内容。次のクラスでは、これら 2 つの関数を使用してクエリを実行します。
1、クエリには query(xquery) を使用します 本のタイトルを取得する必要があります。クエリには query(xquery) を使用します。クエリ ステートメントは次のとおりです:
declare @xmlDoc xml; set @xmlDoc='<book id="0001"> <title>C Program</title> <author>David</author> <price>21</price> </book>'
実行結果は次のとおりです。図:
、value(xquery, dataType) を使用してクエリを実行します は、本のタイトルを取得することもできます。 value 関数を使用する場合、1 つは 2 つのパラメーターを指定する必要があります。 xquery、もう 1 つは取得するデータのタイプです。次のクエリ ステートメントを見てください:
select @xmlDoc.query('/book/title')
実行結果は図に示すとおりです:
、クエリ属性値 クエリまたは値のどちらを使用しても、簡単に属性を取得できます。たとえば、実際には book ノードの ID を取得したいと考えています。ステートメントは次のとおりです。
select @xmlDoc.value('(/book/title)[1]', 'nvarchar(max)')
実行結果は次の図のようになります。
4
select @xmlDoc.value('(/book/@id)[1]', 'nvarchar(max)')
set @xmlDoc='<root> <book id="0001"> <title>C# Program</title> <author>Jerry</author> <price>50</price> </book> <book id="0002"> <title>Java Program</title> <author>Tom</author> <price>49</price> </book> </root>'
4. 変更操作
SQL 変更操作には、更新と削除が含まれます。 SQL には、Xml を変更するための modify() メソッドが用意されています。変更メソッドのパラメータは XML 変更言語です。 XML 変更言語は SQL の Insert、Delete、UpDate に似ていますが、同じではありません。
1、ノード値を変更します
ID 0001 の本の価格を 100 に変更したい場合は、modify メソッドを使用できます。コードは次のとおりです。select @xmlDoc.query('(/root/book[@id="0002"])')
set @xmlDoc.modify('replace value of (/root/book[@id=0001]/price/text())[1] with "100"') --得到id为0001的book节点 select @xmlDoc.query('(/root/book[@id="0001"])')
3、添加节点
很多时候,我们还需要向xml里面添加节点,这个时候我们一样需要使用modify方法。下面我们就向id为0001的book节点中添加一个ISBN节点,代码如下:
--添加节点
set @xmlDoc.modify('insert <isbn>78-596-134</isbn> before (/root/book[@id=0001]/price)[1]') select @xmlDoc.query('(/root/book[@id="0001"]/isbn)')
运行结果如图:
4、添加和删除属性
当你学会对节点的操作以后,你会发现,很多时候,我们需要对节点进行操作。这个时候我们依然使用modify方法,例如,向id为0001的book节点中添加一个date属性,用来存储出版时间。代码如下:
--添加属性
set @xmlDoc.modify('insert attribute date{"2008-11-27"} into (/root/book[@id=0001])[1]') select @xmlDoc.query('(/root/book[@id="0001"])')
运行结果如图:
如果你想同时向一个节点添加多个属性,你可以使用一个属性的集合来实现,属性的集合可以写成:(attribute date{"2008-11-27"}, attribute year{"2008"}),你还可以添加更多。这里就不再举例了。
5、删除属性
删除一个属性,例如删除id为0001 的book节点的id属性,我们可以使用如下代码:
--删除属性
set @xmlDoc.modify('delete root/book[@id="0001"]/@id') select @xmlDoc.query('(/root/book)[1]')
运行结果如图:
6、修改属性
修改属性值也是很常用的,例如把id为0001的book节点的id属性修改为0005,我们可以使用如下代码:
--修改属性
set @xmlDoc.modify('replace value of (root/book[@id="0001"]/@id)[1] with "0005"') select @xmlDoc.query('(/root/book)[1]')
运行结果如图:
OK,经过上面的学习,相信你已经可以很好的在SQL中使用Xml类型了,下面是我们没有提到的,你可以去其它地方查阅:exist()方法,用来判断指定的节点是否存在,返回值为true或false; nodes()方法,用来把一组由一个查询返回的节点转换成一个类似于结果集的表中的一组记录行。
以上がXMLフィールドに対するSQL操作のサンプルコードの詳細説明(図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

データベース技術コンテスト: Oracle と SQL の違いは何ですか?データベース分野では、Oracle と SQL Server の 2 つは非常に評判の高いリレーショナル データベース管理システムです。どちらもリレーショナル データベースのカテゴリに属しますが、両者の間には多くの違いがあります。この記事では、Oracle と SQL Server の違い、実際のアプリケーションにおけるそれらの機能と利点について詳しく説明します。まず、Oracle と SQL Server の間には構文に違いがあります。
