Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách đảo ngược một chuỗi (SQL Server 2005, SET BASED)

Chỉnh sửa Câu trả lời ban đầu đã hiểu sai yêu cầu. Tôi đã sửa một bản sửa lỗi nhưng việc chia nhỏ xuống cấp độ nhân vật là hoàn toàn không cần thiết. Ít nhất nó có thể cung cấp một số ý tưởng!

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

Trả lại

  • Sinh viên A
  • blah
  • con chó lười biếng, con cáo nâu quá khích nhanh nhẹn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thu thập dữ liệu tự động về các công việc đã hoàn thành trong MS SQL Server

  2. Làm cách nào để thay đổi độ dài của varchar trong khóa chính tổng hợp?

  3. Không kết nối với SQL Server qua VPN

  4. Các mục ORDER BY phải xuất hiện trong danh sách chọn nếu câu lệnh chứa toán tử UNION, INTERSECT hoặc EXCEPT (SQL Server)

  5. Hàm chuỗi SQL Server (Danh sách đầy đủ)