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

分隔符:<br>字符串(例):1<br>23<br>456<br>7890现在要取数据456(长度不定)即第2个<br>和第3个<br>之间的字符串用sql怎么写另外这只... 分隔符:<br>
字符串(例):1<br>23<br>456<br>7890
现在要取数据456(长度不定)即第2个<br>和第3个<br>之间的字符串
用sql怎么写
另外 这只是所有数据中的一行余下的也是做同样的处理
数据库 sqlserver 2008 r2
展开
 我来答
Forrest_brm
2015-09-17 · TA获得超过327个赞
知道小有建树答主
回答量:217
采纳率:100%
帮助的人:252万
展开全部
select substring('1<br>23<br>456<br>7890',CHARINDEX('1<br>23<br>456<br>7890','<br>',1,2)+4,(CHARINDEX('1<br>23<br>456<br>7890','<br>',1,3)-CHARINDEX('1<br>23<br>456<br>7890','<br>',1,2)-4)) from table

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

追问
别的暂且不管,啥时CHARINDEX()有四个参数了。。。。。。
追答
这个,instr是四个参数的。

charindex没有第四个参数,那就要用嵌套了。
charindex('abc','a',charindex('abc','a',1)+1);这种模式
resistant321
推荐于2017-11-21 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:63.1万
展开全部
substr('字符串',

locate('<br>','字符串',locate('<br>','字符串')+1)+1,

locate('<br>','字符串', locate('<br>','字符串',locate('<br>','字符串')+1)+1))
有点乱,第二行是截取第二个分割符出现的位置+1,以此类推,一般超过第4个位置就写函数了,可以百度下,很多
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
2015-09-17 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5166万
展开全部
create table #a(id int identity,col nvarchar(200))
insert into #a(col)
values('1<br>23<br>456<br>7890'),('1<br>456<br>3<br>55'),('34<br>1<br>43<br>2')

;with cte as(
select *,convert(xml,'<br>'+rtrim(replace(col,'<br>','</br><br>'))+'</br>') as col2 from #a
)select id,col2.value('(/br)[3]','nvarchar(max)') as col from cte

id col
----------- ------------
1 456
2 3
3 43
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
676950180
2015-09-17 · TA获得超过115个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:120万
展开全部
写一个函数,获取出两个分割符间的内容。charindex获取分割符位置,结合Left和Right
追问
大哥,能具体点么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式