Close
Thoát

Hôm nay mình sẽ giới thiệu với các bạn kỹ thuật viết câu lệnh SQL để truy vấn từ dữ liệu XML được lưu trong cột một bảng của sơ sở dữ liệu SQL Server.

Bước 1: Tạo bảng

CREATE TABLE XmlSourceTable
(
RecordId INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
XmlData XML NOT NULL
)

Bước 2 : Nhập dữ liệu cho Bảng

INSERT INTO XmlSourceTable VALUES (‘<?xml version=”1.0″ ?>
<Root>
<Row>
<Name>Simon</Name>
<Age>20</Age>
<Skills>
<Skill>Cooking</Skill>
<Skill>Cleaning</Skill>
</Skills>
</Row>
<Row>
<Name>Peter</Name>
<Age>21</Age>
<Skills>
<Skill>Ironing</Skill>
</Skills>
</Row>
</Root>’)
 INSERT INTO XmlSourceTable VALUES (‘<?xml version=”1.0″ ?>
<Root>
<Row>
<Name>Simon1</Name>
<Age>20</Age>
<Skills>
<Skill>Cooking1</Skill>
<Skill>Cleaning1</Skill>
</Skills>
</Row>
<Row>
<Name>Peter1</Name>
<Age>21</Age>
<Skills>
<Skill>Ironing1</Skill>
</Skills>
</Row>
</Root>’)

Bước 3 : Viết SQL Query XML từ Bảng đã tạo.

Simple query
SELECT * FROM XmlSourceTable
— Query data from top level
SELECT
pref.value(‘(Name/text())[1]’, ‘varchar(50)’) as PersonName,
pref.value(‘(Age/text())[1]’, ‘int’) as PersonAge,
pref.query(‘Skills’) as PersonSkills
FROM
XmlSourceTable CROSS APPLY
XmlData.nodes(‘/Root/Row’) AS People(pref)

Query data which include second level in XML hierarchy structure
SELECT
pref.value(‘(Name/text())[1]’, ‘varchar(50)’) as PersonName,
sref.value(‘(text())[1]’, ‘varchar(50)’) as PersonSkill
FROM
XmlSourceTable CROSS APPLY
XmlData.nodes(‘//Row’) AS People(pref) CROSS APPLY
pref.nodes(‘Skills/Skill’) AS Skill(sref)
WHERE pref.value(‘(Name/text())[1]’, ‘varchar(50)’) = ‘Simon’
GO

Mọi ý kiến các bạn xin vui lòng Comment phía dưới sẽ được hỗ trợ và giải đáp sau.

Bình Luận Facebook

Rời khỏi bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Go top