📅  最后修改于: 2023-12-03 15:05:17.394000             🧑  作者: Mango
在SQL Server中,将一个字符串分割成多个子串是一个常见的操作。然而,通常我们只需要获取最后一个子串。本文将介绍如何在SQL Server中获取最后一个分割的字符串。
使用 REVERSE 函数可以翻转字符串,这样我们就能够方便地使用CHARINDEX函数获取最后一个分割的位置。
DECLARE @str VARCHAR(50) = 'A,B,C,D,E';
DECLARE @delimiter CHAR = ',';
SELECT REVERSE(LEFT(REVERSE(@str), CHARINDEX(@delimiter, REVERSE(@str))-1)) AS LastSplitString;
解释:首先,使用REVERSE函数翻转字符串。然后,在翻转后的字符串中使用CHARINDEX函数查找最后一个分割位置。最后,使用LEFT函数截取最后一个分割字符串,并再次使用REVERSE函数翻转回来。
结果:
| LastSplitString | | :-------------: | | E |
另一种方法是使用SUBSTRING函数和REVERSE函数,根据逆序的子串位置以及字符串长度,计算出最后一个分割的位置。
DECLARE @str VARCHAR(50) = 'A,B,C,D,E';
DECLARE @delimiter CHAR = ',';
SELECT REVERSE(SUBSTRING(REVERSE(@str), 1, CHARINDEX(@delimiter, REVERSE(@str))-1)) AS LastSplitString;
结果:
| LastSplitString | | :-------------: | | E |
SQL Server中的XML PATH函数可以将行数据转换为XML格式,同时使用STUFF和FOR XML PATH两个函数就可以实现最后一个分割字符串查询。
DECLARE @str VARCHAR(50) = 'A,B,C,D,E';
DECLARE @delimiter CHAR = ',';
SELECT STUFF(
(SELECT @delimiter + value
FROM STRING_SPLIT(@str, @delimiter)
FOR XML PATH('')), 1, 1, '') LastSplitString;
解释:首先使用STRING_SPLIT函数拆分字符串,然后将拆分得到的子串用XML格式连接起来。最后使用STUFF函数截取除最后一个分割字符串外的字符串,即为最后一个分割字符串。
结果:
| LastSplitString | | :-------------: | | E |
以上三种方法都可以用于获取SQL Server中的最后一个分割字符串。根据实际情况,选择合适的方法即可。