Ví dụ của bạn không hợp lệ theo hai cách:
- Không được phép có tiền tố vùng tên mà không có khai báo vùng tên tương ứng.
- Kết thúc của bạn các thẻ không bao gồm
/
ở khắp mọi nơi ...
Đây là một cách hack xấu xí, nhưng bạn có thể thử cách này:
DECLARE @Params XML
SET @Params = REPLACE('<filter>
<ns0:from>2016-09-19</ns0:from>
<ns0:to>2017-01-01</ns0:to>
</filter>','ns0:','');
SELECT @Params.value('(/*:filter/*:from)[1]', 'date') AS [from];
Nếu bạn không biết trước tất cả các tiền tố không gian tên, điều này sẽ thực sự phức tạp ...