SQL Server截取字符串最后一位主要有三种常用方法:一是直接使用RIGHT函数;二是利用SUBSTRING配合LEN函数;三是通过REVERSE反转字符串后取首字符,实战中,还需注意处理NULL值及空字符串等边界情况,以确保查询的准确性和健壮性。
在数据库开发与数据处理过程中,经常会遇到需要从字符串中提取特定部分的需求。“截取字符串中最后一位”是一个比较常见但又容易被忽略的细节,在 SQL Server 中,虽然不像某些脚本语言那样有内置的 substring_right 函数,但我们可以通过几种高效的方法来实现这一功能。
以下是几种常用的实现方式,按推荐程度排序:
使用 RIGHT() 函数(最推荐)
这是最直观、最简洁的方法。RIGHT() 函数的作用是返回字符串右边指定数量的字符,要获取最后一位,我们只需要指定参数为 1。

语法:
RIGHT(字符串表达式, 长度)
示例:
DECLARE @str NVARCHAR(50) = 'HelloWorld'; SELECT RIGHT(@str, 1) AS LastChar;
结果: d
优点: 代码简单,可读性强,性能通常较好。
使用 LEN() + SUBSTRING() 函数(经典方法)
如果你需要结合字符串长度进行更复杂的逻辑判断,可以先计算字符串长度,然后利用 SUBSTRING() 函数截取。
逻辑: 最后一位的位置 = 总长度 - 1。
语法:
SUBSTRING(字符串表达式, 开始位置, 长度)
示例:
DECLARE @str NVARCHAR(50) = 'HelloWorld'; SELECT SUBSTRING(@str, LEN(@str) - 1, 1) AS LastChar;
结果: d
注意: 在 SQL Server 中,LEN() 函数会自动去除字符串尾部的空格,如果你需要保留空格进行计算,建议使用 DATALENGTH()。
使用 STUFF() + REVERSE() 函数(进阶技巧)
这是一种比较“巧妙”的方法,不需要手动计算长度,其核心逻辑是:先将字符串反转,去掉第一个字符,再将剩下的字符串反转回来。
示例:
DECLARE @str NVARCHAR(50) = 'HelloWorld'; SELECT REVERSE(STUFF(REVERSE(@str), 1, 1, ''));
流程解析:
REVERSE(@str)-> 'dlroWolleH'STUFF(..., 1, 1, '')-> 去掉反转后字符串的第一个字符 'd',得到 'lroWolleH'REVERSE(...)-> 'd'
结果: d
适用场景: 虽然这种方法能实现需求,但逻辑相对晦涩,在大多数情况下,使用 RIGHT() 或 LEN + SUBSTRING 会更加高效且易于维护。
在 SQL Server 中截取字符串中最后一位,RIGHT(字符串, 1) 是最佳选择,它不仅代码最短,而且逻辑最清晰,除非你有特殊的业务场景(例如需要同时获取倒数第二个字符或处理带分隔符的路径),否则无需使用复杂的 REVERSE 组合函数。
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

