Cách đơn giản nhất để chỉnh sửa mục đơn trong cột XML?


9

Theo tôi hiểu, MS SQL Server Management Studio không cho phép chỉnh sửa / thay thế trực tiếp các mục trong cột XML thông qua GUI (sao chép / dán không hoạt động, v.v.).

Tùy chọn dễ nhất để thay thế một mục trong một cột XML là gì? Tôi có phải sử dụng một cái gì đó khác với CẬP NHẬT / THAY THẾ cho một giá trị cột XML không?

Câu trả lời:


22

Nếu bạn chỉ cần thay thế toàn bộ đoạn XML trong một lần, thì bạn có thể thực hiện CẬP NHẬT bình thường, ví dụ như thế này:

UPDATE yourTable
SET yourXML = '<yourNewValidXML/>' 
WHERE rowId = 1

Nếu bạn cần chỉnh sửa các thuộc tính hoặc thành phần riêng lẻ thì bạn có thể sử dụng phương thức .modify của kiểu dữ liệu XML trong SQL Server để cập nhật các giá trị đơn lẻ. Đây là một ví dụ đơn giản để giúp bạn bắt đầu:

DECLARE @t TABLE ( rowId INT IDENTITY PRIMARY KEY, yourXML XML )

INSERT INTO @t ( yourXML )
VALUES ( '<Users>
    <User Name="Bob"></User>
    <User Name="Mikhail"></User>
    <User Name="John"></User>
    <User Name="Sue"></User>
</Users>' )

SELECT 'before' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

-- Update one attribute
UPDATE @t
SET yourXML.modify('replace value of (Users/User/@Name[.="Bob"])[1] with "wBob"')
WHERE rowId = 1

SELECT 'after' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

Nếu bạn cần thêm trợ giúp, vui lòng gửi một mẫu nhỏ XML và kết quả mong đợi của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.