Если вы хотите изменить строку слово за словом, вы можете использовать следующий оптимизированный код для него.
CREATE FUNCTION [dbo].[fn_ReverseWordsInSentence]
(
@ip VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
BEGIN
DECLARE @op VARCHAR(MAX)
SET @op = ''
DECLARE @Lenght INT
WHILE LEN(@ip) > 0
BEGIN
IF CHARINDEX(' ', @ip) > 0
BEGIN
SET @op = SUBSTRING(@ip,0,CHARINDEX(' ', @ip)) + ' ' + @op
SET @ip = LTRIM(RTRIM(SUBSTRING(@ip,CHARINDEX(' ', @ip) + 1,LEN(@ip))))
END
ELSE
BEGIN
SET @op = @ip + ' ' + @op
SET @ip = ''
END
END
RETURN @op
END
Вы выполняете эту функцию с указанной вами входной строкой следующим образом.
SELECT [dbo].[fn_ReverseWordsInSentence] ('My name is Jarvis')
И это вернет следующую строку в качестве вывода.
"Джарвис зовут Мой"
Если вы просто хотите перевернуть всю строку символ за символом, тогда вы можете использовать Sql Server во встроенной функции обратной строки.
DECLARE @test varchar(250) = 'My name is Jarvis'
SELECT reverse(@test)
И это вернет "sivraJ si eman yM" в качестве вывода.