Không sử dụng nvarchar mà không có kích thước. Từ tài liệu :
Nếu bạn không biết độ dài chính xác, bạn luôn có thể sử dụng nvarchar(max)
:
declare @criteria xml;
set @criteria = N'<criterion id="DocName"><value>abcd</value></criterion>';
declare @val nvarchar(max);
set @val = @criteria.value('(criterion[@id="DocName"]/value)[1]', 'nvarchar(max)');
select @val;