試試這樣說:
DECLARE @LineBreak VARCHAR(2)=CHAR(13)+CHAR(10); --might be only 10 or only 13...
DECLARE @yourString VARCHAR(MAX)=
'abc
def
$
ghi
&
jkl';
SELECT The.Parts.value('.','varchar(max)')
FROM (SELECT CAST('<x>' + REPLACE(REPLACE(REPLACE(REPLACE(@yourString,'<','<'),'>','>'),'&','&'),@LineBreak,'</x><x>') + '</x>' AS XML)) AS MyString(AsXml)
CROSS APPLY MyString.AsXml.nodes('x') AS The(Parts)
WHERE LEN(The.Parts.value('.','varchar(max)'))>1
如果需要再次連接起來,以打破單一的串線的結果,使用這個選擇
SELECT REPLACE(STUFF
(
(
SELECT 'HereTheLineBreak' + The.Parts.value('.','varchar(max)')
FROM (SELECT CAST('<x>' + REPLACE(REPLACE(REPLACE(REPLACE(@yourString,'<','<'),'>','>'),'&','&'),@LineBreak,'</x><x>') + '</x>' AS XML)) AS MyString(AsXml)
CROSS APPLY MyString.AsXml.nodes('x') AS The(Parts)
WHERE LEN(The.Parts.value('.','varchar(max)'))>1
FOR XML PATH('')
),1,16,''),'HereTheLineBreak',@LineBreak)
是特殊字符限制爲「$」和'&',還是一個有點小的名單? –
在現有列表的這個位置的成員是* good *的字符串?或者換句話說:一些邏輯應該怎麼知道,哪些條目是好的,哪些是壞的? – Shnugo
不,還有很多其他的角色,比如',〜,Ÿ,Š。但有一點很常見,它們是單個字符,我可以刪除長度爲1個字符的任何東西。 –