Tôi có một bảng có trường XML. XML điển hình mà nó chứa;Làm việc với kiểu dữ liệu XML của SQL Server
<things>
<Fruit>
<imageId>39</imageId>
<title>Apple</title>
</Fruit>
<Fruit>
<imageId>55</imageId>
<title>Pear</title>
</Fruit>
<Fruit>
<imageId>76</imageId>
<title>Grape</title>
</Fruit>
</things>
Trong bảng tôi có khoảng 50 hàng, tôi chỉ quan tâm đến hai trường, omId (int primary key) và omText (dữ liệu xml của tôi).
gì tôi đang cố gắng để đạt được một cách khác để nói, trên tất cả các dữ liệu xml trong toàn bộ bảng ... cho tôi tất cả các xmlElements nơi tiêu đề là X. Hoặc cho tôi một tội danh là tất cả các mục sử dụng imageId trong số 55.
Tôi đang sử dụng loại dữ liệu XML VALUE và hàm QUERY để truy xuất dữ liệu.
select omID,
omText.query('/things/Fruit')
,cast('<results>' + cast(omText.query('/things/Fruit') as varchar(max)) + '</results>' as xml) as Value
from dbo.myTable
where omText.value('(/things/Fruit/imageId)[1]', 'int') = 76
Chỉ hoạt động khi id tôi đang tìm kiếm là tài liệu đầu tiên trong tài liệu. Dường như không tìm kiếm tất cả xml.
Về cơ bản, resultset quay trở lại với một hàng cho mỗi mục nhập trong BẢNG, tôi nghĩ tôi cần có một hàng cho mỗi ELEMENT được kết hợp ... Không chắc chắn cách bắt đầu viết nhóm theo thời gian này.
Tôi bắt đầu cảm thấy như tôi đang làm điều này khó hơn nó cần phải ...... suy nghĩ & ý tưởng xin vui lòng.
Đó là ..... Bạn là ngôi sao. Chúc mừng :) Đừng cho rằng bạn có thể chỉ cho tôi theo hướng của bất kỳ tài nguyên phong nha nào để đọc về thao tác SQL XML ??? – GordonB
Vui vì tôi có thể giúp, Gordon! Bài viết XML XML DML tốt nhất mà tôi đã tìm thấy cho đến nay là khá cũ, nhưng vẫn rất hữu ích: http://www.15seconds.com/Issue/050803.htm –
Hoặc tại đây có thể: http://www.sqlservercentral.com/ Các bài viết/SQL + Server + 2005/XML / –