2010-06-25 4 views
7

Tôi chỉ làm điều này:Kiểm tra xem SQL Server 2005 lĩnh vực XML là trống

Delete FROM MyTable WHERE ScopeValue = "" 
Delete FROM G_Scope WHERE ScopeValue is '' 
Delete FROM G_Scope WHERE ScopeValue = empty 
Delete FROM G_Scope WHERE ScopeValue is empty 

Tôi muốn xóa tất cả các hàng với lĩnh vực xml (không nullable), nơi ScopeValue cột có mục trống có nghĩa là zero chars.

Có ai biết không?

Trả lời

10

Hãy thử điều này:

DELETE FROM dbo.G_Scope WHERE ScopeValue IS NULL 

Các SQL Server cột sẽ NULL là nếu không chứa giá trị.

Khả năng khác sẽ là XML không phải là NULL, nhưng chứa một chuỗi trống làm giá trị của nó. Để làm điều đó, hãy sử dụng lệnh này:

-- The DATALENGTH of an empty XML column is 5 
SELECT * FROM dbo.G_Scope WHERE DATALENGTH(ScopeValue) = 5 

Điều đó có hiển thị cho bạn các hàng bạn quan tâm không?

+0

thats odd ..., hoặc tôi đã làm điều này trước khi là NULL ... và có vẻ như tôi có một vấn đề làm mới hiển thị quản lý studio sql. Tôi có thể thực hiện lựa chọn trên bảng lặp đi lặp lại hiển thị ScopeValues ​​với các trường trống ... – msfanboy

+0

@msfanboy: cập nhật câu trả lời của tôi với tùy chọn thứ hai ... –

+14

@marc_s Tôi tin rằng độ dài của một biến XML trống sẽ là 5 : 'declare @x xml; đặt @ x = ''; chọn độ dài dữ liệu (@x); chọn diễn viên (@x dưới dạng varbinary (max)) ' –