如何在SQL Server中反转字符串

如何在SQL Server中反转字符串,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我在SQL中有一个字符串存储在@result变量中,类型为Varchar(MAX),如下所示: Attributes >> Items >> Category >> Package 如何在不影响存储过程性能的情况下得到相反的结果。我想在>的基础上断开字符串 Package >> Category >> Items >> Attributes 如果字符串中最多有四个项目,并且没有包含句点,则可以使用PARSENAME()

我在SQL中有一个字符串存储在
@result
变量中,类型为
Varchar(MAX)
,如下所示:

Attributes >> Items >> Category >> Package
如何在不影响存储过程性能的情况下得到相反的结果。我想在
>
的基础上断开字符串

Package >> Category >> Items >> Attributes 

如果字符串中最多有四个项目,并且没有包含句点,则可以使用
PARSENAME()


另一个选项是拆分字符串并重新构建它。

如果您运行的是SQL Server 2008或更高版本,请尝试:

    Select Reverse(@result)

使用分隔符
>
将字符串分成不同的部分,并为每一行指定行号

然后
将行转换为单个字符串
>
按desc排序分隔

如果您有4个以上的元素,这应该可以工作

DECLARE @output VARCHAR(5000)='',
        @String VARCHAR(5000)='Attributes >> Items >> Category >> Package'

SELECT @output += splt_data + ' >> '
FROM  (SELECT Row_number()
                OVER(
                  ORDER BY (SELECT NULL))                       rn,
              Rtrim(Ltrim(Split.bb.value('.', 'VARCHAR(100)'))) splt_data
       FROM   (SELECT Cast ('<M>' + Replace(@String, '>>', '</M><M>')
                            + '</M>' AS XML) AS Data) AS A
              CROSS APPLY Data.nodes ('/M') AS Split(bb)) ou
ORDER  BY rn DESC

字符串中最多有四个元素吗?包egakcaP>>yrogetaC>>smetI>>setubirttAHe说字符串存储在他的变量中。如果他想反转该字符串,最简单的方法是使用系统函数REVERSE(string_表达式),这与OP所说的相差甚远。问题是要反转字符串中的单词,而不是字符串中的字母。任何时候向过程添加任何类型的代码都会影响性能。此解决方案速度极快,因此影响应该最小,甚至不太可能明显。
DECLARE @output VARCHAR(5000)='',
        @String VARCHAR(5000)='Attributes >> Items >> Category >> Package'

SELECT @output += splt_data + ' >> '
FROM  (SELECT Row_number()
                OVER(
                  ORDER BY (SELECT NULL))                       rn,
              Rtrim(Ltrim(Split.bb.value('.', 'VARCHAR(100)'))) splt_data
       FROM   (SELECT Cast ('<M>' + Replace(@String, '>>', '</M><M>')
                            + '</M>' AS XML) AS Data) AS A
              CROSS APPLY Data.nodes ('/M') AS Split(bb)) ou
ORDER  BY rn DESC
SELECT LEFT(@output, Len(@output) - 3) --Package >> Category >> Items >> Attributes