Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak odwrócić ciąg (SQL Server 2005, SET BASED)

Edytuj Pierwotna odpowiedź błędnie zrozumiała ten wymóg. Zniknąłem poprawkę, ale podział na poziom postaci jest teraz całkowicie niepotrzebny. Przynajmniej może to dać kilka pomysłów!

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

Zwroty

  • Student A
  • bla
  • pies leniwy przeskoczył lis brązowy szybko


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę wybrać z listy wartości w SQL Server?

  2. Dlaczego kolumna TEXT zwraca tylko 4096 bajtów?

  3. Jak generować dane testowe w SQL Server

  4. Pobieranie danych za pomocą zestawu znaków UTF-8 z serwera MSSQL przy użyciu rozszerzenia PHP FreeTDS

  5. Rozwiązywanie problemów z długimi zapytaniami w MS SQL Server