首页 > 解决方案 > SQL QUERY 使用 SQL Server 将字符串中的最后一个字母带到第一个字母位置

问题描述

我有一个从SQL Server 数据库中Supervisor的表调用的列。JobData在此Supervisor列中,记录的格式如下。

DANNYL
ADITYAG
SAMMYS
BOBBYJ

我想将这些记录转换为小写并将最后一个字母变为第一个字母。例如,DANNYL应更改为格式ldanny并且此格式应应用于所有剩余记录。

任何人都可以帮我解决这个问题的 SQL 查询吗?

标签: sqlsql-server

解决方案


您可以使用以下解决方案LEFTRIGHT获取名称的各个部分。通过使用LOWER,您可以将大写字符转换为小写:

SELECT LOWER(RIGHT(Supervisor, 1) + LEFT(Supervisor, LEN(Supervisor) - 1)) 
FROM JobData
WHERE LTRIM(RTRIM(Supervisor)) <> ''

-- or using ABS on the length - 1 so the WHERE isn't needed.
SELECT LOWER(RIGHT(Supervisor, 1) + LEFT(Supervisor, ABS(LEN(Supervisor) - 1))) 
FROM JobData

由于该列看起来Supervisor包含空值,因此您也可以使用以下解决方案而无需计算并且不会在空值上失败:

SELECT LOWER(RIGHT(Supervisor, 1) + REVERSE(SUBSTRING(REVERSE(Supervisor), 2, LEN(Supervisor))))
FROM JobData

...和另一种可能性使用STUFF

SELECT LOWER(LEFT(STUFF(Supervisor, 1, 0, RIGHT(Supervisor, 1)), LEN(Supervisor)))
FROM JobData

dbfiddle.uk 上的演示


推荐阅读