SQL Server 使用 FOR XML 符號轉換問題
2 min readNov 25, 2021
Replace “<” and “>” with “<” and “>” in sql server
如題,最近想做到欄位合併的功能,使用 stuff ((select ‘,’ + {column} FROM A WHERE B for XML)…) 遇到 “>”, “<” 經過 XML 轉後會變成 “>” and “<” 的問題
查了很久才發現跟 for XML 有關,原因可能是 <> 會跟 XML 格式有衝突,所以轉換過程會把 <> 轉成其他表示方式
解法:
stuff ((select ‘,’ + {column} FROM A WHERE B for XML type).value(‘.’, ‘[TYPE]’) …)
[TYPE] 是要轉換成的型態,建議大小設定剛好就好,這會影響 performance(e.g., VARCHAR(MAX) -> VARCHAR(128))
另外 value 只能是小寫,如果改成 VALUE 會認不到這個 key word
ref: