如何取第N个字元前的字串?

benwu1210 2012-11-30 09:41:08
请问要如何把
「AAAAxxBBBBBBBxxCCCCxxDDDDDDDDDDDxxEEEEEExxFFFFFFFFFF」
取出
「AAAAxxBBBBBBBxxCCCC」
(即第三个xx前的字串)

谢谢
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangshun 2012-11-30
  • 打赏
  • 举报
回复
DECLARE @split VARCHAR(20),@i INT,@result VARCHAR(4000)
SET @split='xx'
SET @i=3

DECLARE @xml XML
DECLARE @str VARCHAR(4000)
SET @str='AAAAxxBBBBBBBxxCCCCxxDDDDDDDDDDDxxEEEEEExxFFFFFFFFFF'

set @xml='<value>'+REPLACE(@str,@split,'</value><value>')+'</value>'

SET @result=stuff(CAST( (SELECT @split+result FROM(
SELECT 
     T.C.value('.','VARCHAR(200)') AS result,flag=ROW_NUMBER() OVER (ORDER BY @xml.query('.').value('.','VARCHAR(4000)'))
from @xml.nodes('/value') T(C))g
WHERE flag<@i+1
FOR XML PATH('') )AS VARCHAR(max)),1,LEN(@split),'')

SELECT @result
水族杰纶 2012-11-30
  • 打赏
  • 举报
回复
引用 2 楼 OrchidCat 的回复:
SQL code??123456DECLARE @i NVARCHAR(2000) SET @i ='AAAAxxBBBBBBBxxCCCCxxDDDDDDDDDDDxxEEEEEExxFFFFFFFFFF' SELECT SUBSTRING(@i,0,CHARINDEX('xx',@i,CHARINDEX('xx',@i,CHARINDEX('xx',@i)+1)+1)……
.
lenovore 2012-11-30
  • 打赏
  • 举报
回复
引用 1 楼 xuam 的回复:
charindex()
SUBSTRING起始位置应该是1而非0吧? SELECT SUBSTRING(@i,1,CHARINDEX('xx',@i,CHARINDEX('xx',@i,CHARINDEX('xx',@i)+1)+1))
Mr_Nice 2012-11-30
  • 打赏
  • 举报
回复
DECLARE @i NVARCHAR(2000)

SET @i ='AAAAxxBBBBBBBxxCCCCxxDDDDDDDDDDDxxEEEEEExxFFFFFFFFFF'

SELECT SUBSTRING(@i,0,CHARINDEX('xx',@i,CHARINDEX('xx',@i,CHARINDEX('xx',@i)+1)+1))
--AAAAxxBBBBBBBxxCCCC
xuam 2012-11-30
  • 打赏
  • 举报
回复
charindex()

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧