Bearbeiten Die ursprüngliche Antwort hat die Anforderung falsch verstanden. Ich habe eine Lösung gefunden, aber die Aufteilung auf Charakterebene ist jetzt völlig unnötig. Zumindest könnte es einige Ideen geben!
WITH Strings AS
(
select 'A Student' as String
UNION ALL
select 'blah' as String
UNION ALL
select 'the quick brown fox jumped over the lazy dog' as String
),
SplitChars As
(
SELECT ROW_NUMBER() OVER (ORDER BY number) AS number, String, SUBSTRING(String,number,1) AS Ch FROM Strings
JOIN master.dbo.spt_values on number BETWEEN 1 AND LEN(String) AND type='P'
)
SELECT String,
replace(Stuff(
(
Select '' + Ch
From SplitChars SC3
WHERE SC3.String = SC.String
Order By (SELECT COUNT(*) FROM SplitChars SC2 WHERE SC2.String = SC3.String AND SC2.Ch = ' ' AND SC2.number < SC3.number) desc, case when SC3.ch = ' ' then -1 else number end
For Xml Path('')
),1, 0, ''), ' ', ' ') AS Reversed
FROM SplitChars SC
GROUP BY String
Rückgabe
- Schüler A
- bla
- Hund faul der übersprungene Fuchs braun schnell der