我的文本采用以下命名约定格式:
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
如果是 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