Có một mẹo sử dụng chuyển đổi ngầm định của VARBINARY
đến base64 trở lại:
Đây danh sách điều ác của bạn
DECLARE @evilChars VARCHAR (MAX) =CHAR (0x0) + CHAR (0x1) + CHAR (0x2) + CHAR (0x3) + CHAR (0x4) + CHAR (0x5) + CHAR (0x6) + CHAR (0x7) + CHAR (0x8) + CHAR (0x9) + CHAR (0xa) + CHAR (0xb) + CHAR (0xc) + CHAR (0xd) + CHAR (0xe) + CHAR (0xf) + CHAR (0x10) + CHAR (0x11) + CHAR (0x12) + CHAR (0x13) + CHAR (0x14) + CHAR (0x15) + CHAR (0x16) + CHAR (0x17) + CHAR (0x18) + CHAR (0x19) + CHAR (0x1a) + CHAR (0x1b) + CHAR (0x1c) + CHAR (0x1d) + CHAR (0x1e) + CHAR (0x1f) + CHAR (0x7f);
Điều này hoạt động
DECLARE @XmlAsString NVARCHAR (MAX) =(SELECT @evilChars FOR XML PATH ('test')); SELECT @XmlAsString;
Kết quả (một số được "in")
x00; x01; x02; x03; x04; x05; x06; x07; x08; x0B; x0C; x0D; x0E; x0F; x10; x11; x12; x13; x14; x15; x16; x17; x18; x19; x1A; x1B; x1C; x1D; x1E; x1F;
Những điều sau đây bị cấm
CHỌN CAST (@XmlAsString AS XML)
Nhưng bạn có thể sử dụng chuyển đổi ngầm định của VARBINARY thành base64
DECLARE @ base64 NVARCHAR (MAX) =(SELECT CAST (@evilChars AS VARBINARY (MAX)) FOR XML PATH ('test')); SELECT @ base64;
Kết quả
AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh9 /
Bây giờ bạn đã có XML thực của mình bao gồm các ký tự đặc biệt !
SELECT CAST (CAST (@ base64 AS XML) .value ('/ test [1]', 'varbinary (max)') AS VARCHAR (MAX)) FOR XML PATH ('đã chuyển đổi lại')
Kết quả
<được đảo ngược> x0; x1; x2; x3; x4; x5; x6; x7; x8; xB; xC; xE; xF; x10; x11; x12; x13; x14; x15; x16; x17; x18; x19; x1A; x1B; x1C; x1D; x1E; x1F;
-
Tối ưu hóa TempDB:Tránh tắc nghẽn và các vấn đề về hiệu suất
-
Giới thiệu về các hàm có giá trị bảng nội tuyến (ITVF) trong SQL Server
-
Truy vấn hoạt động tối ưu cho bản ghi mới nhất cho mỗi N
-
Cách trả về một chuỗi con từ một chuỗi trong SQL Server bằng cách sử dụng hàm SUBSTRING ()
-
Cú pháp nối nào tốt hơn?