sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man vänder en sträng (SQL Server 2005, SET-BASERAT)

Redigera Originalsvaret missförstod kravet. Jag har fixat en fix men uppdelningen ner till karaktärsnivå är helt onödig nu. Det kan åtminstone ge några idéer!

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, ''), '&#x20;', ' ') AS Reversed
FROM SplitChars SC 
GROUP BY String

Retur

  • Elev A
  • bla
  • hund lat den överhoppade räven brun snabbt den


  1. Hur UPDATEXML() fungerar i MariaDB

  2. hur matar jag ut radnamnet baserat på en länkningstabell?

  3. Hur man återställer AUTO_INCREMENT i MySQL

  4. Åsidosätter unika indexerade värden