--LEFT函数从字符串左侧开始截取,两个参数(字符串,截取长度)
--RIGHT函数从字符串右侧开始截取,两个参数(字符串,截取长度)
--CHARINDEX函数获取字符串中指定字符的下标,三个参数(要寻找的字符,字符串,从哪个下标开始找字符),第三个参数按需给
--SUBSTRING函数按下标和长度截取字符串,三个参数(字符串,开始下标第一位为1,截取长度)
--LEN函数获取字符串的长度,一个参数(字符串)
DECLARE @str NVARCHAR(100)
SET @str='AAA-BB-C'
--字符串格式标准,分割符位置都一样可以用下面的
SELECT LEFT(@str,3) 取AAA
,SUBSTRING(@str,CHARINDEX('-',@str)+1,2) 取BB
,RIGHT(@str,1) 取C
--字符串格式不标准用下面的方式 关键点就是CHARINDEX第三个参数的设定,从哪个下标开始
--如同一列的值
-- AAA-BB-C
-- AAA-BB-CCCC-D
-- AAA-BB-CCCC-D-F
SET @str='AAA-BBBBBB-CCC-DD-F'
SELECT SUBSTRING(@str,1,CHARINDEX('-',@str)-1) 取第一个分割符前的值
,SUBSTRING(@str,CHARINDEX('-',@str)+1,CHARINDEX('-',@str,CHARINDEX('-',@str)+1)-CHARINDEX('-',@str)-1) 取第一个分割符和第二个分割符中间的值
,LEFT(@str,CHARINDEX('-', @str,LEN(@str)-2)-1) 取最后一个分割符前面的值
,RIGHT(@str,LEN(@str)-CHARINDEX('-',@str,LEN(@str)-2)) 取最后一个分割符后面的值
记 sqlserver 分割拆分规则或不规则字符串
于 2023-08-30 16:46:49 首次发布