sql截取第2个和第3个分隔符之间的字符串

2024-12-04 23:51:40
推荐回答(4个)
回答1:

select substring('1
23
456
7890',CHARINDEX('1
23
456
7890','
',1,2)+4,(CHARINDEX('1
23
456
7890','
',1,3)-CHARINDEX('1
23
456
7890','
',1,2)-4)) from table

这是sqlserver的函数了
思路就是:获取第2个
的位置,加4(
这个字符串的长度),然后截取其之后到第三个
的长度的字符串。
这是substring 的api
SUBSTRING(string,start_position,[length])    求子字符串,返回字符串
解释:string 元字符串
       start_position   开始位置(从0开始)
       length 可选项,子字符串的个数

回答2:

substr('字符串',

locate('
','字符串',locate('
','字符串')+1)+1,

locate('
','字符串', locate('
','字符串',locate('
','字符串')+1)+1))
有点乱,第二行是截取第二个分割符出现的位置+1,以此类推,一般超过第4个位置就写函数了,可以百度下,很多

回答3:

create table #a(id int identity,col nvarchar(200))
insert into #a(col)
values('1
23
456
7890'),('1
456
3
55'),('34
1
43
2')

;with cte as(
select *,convert(xml,'
'+rtrim(replace(col,'
','

'))+'
') as col2 from #a
)select id,col2.value('(/br)[3]','nvarchar(max)') as col from cte

id col
----------- ------------
1 456
2 3
3 43

回答4:

写一个函数,获取出两个分割符间的内容。charindex获取分割符位置,结合Left和Right