检索两个分隔符之间的文本

问题描述 投票:0回答:1

我的文本采用以下命名约定格式:

ab123_text1_text2_text3_text4_text5_.xlsx
。我正在尝试提取
"**text4**"
块。我尝试过使用
substring
charindex
函数,但我对 SQL 很陌生,仍然没有理解它们的细微差别。还想知道是否可以复制这些结果来检索 text5 块。任何见解将不胜感激。

我尝试使用以下代码来提取文本,但我收到的“text3”块不是我想要的。以下是我正在使用的代码:

SELECT 
    SUBSTRING(FILENAME,
                    CHARINDEX('_',FILENAME,CHARINDEX('_',FILENAME) + 1) +1,
                    CHARINDEX('_',FILENAME,CHARINDEX('_',FILENAME,CHARINDEX('_',FILENAME) +1)+1) -
                    CHARINDEX('_',FILENAME,CHARINDEX('_',FILENAME)+1)-1) AS 'SOMETHING'

FROM mytable

如果代码按需要工作,我的结果应该如下

Results Column1:
**Text4** block
sql sql-server substring charindex
1个回答
1
投票

如果是 2016 年以上,您可以使用一些 JSON。

如果<2016, there is an XML approach as well

示例

Declare @YourTable table (SomeCol varchar(100))
Insert Into @YourTable values
 ('ab123_text1_text2_text3_text4_text5_.xlsx.')


Select A.SomeCol
      ,Pos4 = JSON_VALUE(JS,'$[4]')
From  @YourTable A
Cross Apply (values ('["'+replace(string_escape([SomeCol],'json'),'_','","')+'"]') ) B(JS)

结果

SomeCol                                     Pos4
ab123_text1_text2_text3_text4_text5_.xlsx.  text4
© www.soinside.com 2019 - 2024. All rights reserved.