Как перевернуть строку (SQL Server 2005, SET BASED) - PullRequest
1 голос
/ 17 июня 2010

Например,

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

Выход:

tnedutS A

Ожидаемое значение:

Student A

Выход(с использованием обратного), как и ожидалось.Но мое требование соответствует описанному.

Требуется помощь по SET BASED.

Я использую SQL Server 2005

Ответы [ 2 ]

1 голос
/ 17 июня 2010

Редактировать Исходный ответ неправильно понял требование.Я исправил, но разделение до уровня персонажа теперь совершенно не нужно.По крайней мере, это может дать некоторые идеи!

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
  • бла
  • собака ленивая перескочившая лиса коричневая быстро
1 голос
/ 17 июня 2010

Звучит так, будто вам нужно разбить строку на токены.Смотрите следующие несколько способов, которыми вы можете сделать это.Очевидно, вам нужно установить разделитель на ''.http://bit.ly/c3rUvM

Затем вы можете перестроить свою строку, читая элементы в обратном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...