如何反转字符串(SQL Server 2005,SET BASED) [英] How to reverse a string (SQL Server 2005, SET BASED)

查看:28
本文介绍了如何反转字符串(SQL Server 2005,SET BASED)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如

Declare @str varchar2(20)
Set @str = 'A Student'
Select Reverse(@str)

输出:

tnedutS A

预期:

Student A

输出(使用 Reverse)与预期一致.但我的要求是描述的那个.

The output(using Reverse) is as expected. But my requirement is the one described.

SET BASED 需要帮助.

我使用的是 SQL Server 2005

I am using SQL Server 2005

推荐答案

编辑 原始答案误解了要求.我已经解决了问题,但现在完全没有必要拆分到角色级别.至少它可以提供一些想法!

Edit Original answer misunderstood the requirement. I've Bodged a fix but the split down to character level is completely unnecessary now. At least it might give some ideas!

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

退货

  • 学生A
  • 废话
  • 狗偷懒了跳狐棕色快

这篇关于如何反转字符串(SQL Server 2005,SET BASED)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆