我有这样的字符串:
FOO_BAR_3423423_dsadsa.doc
BAZ_BAZzz_dsadsa.nox
_
的数字可以不同,但我需要始终选择直到第二个 _
:FOO_BAR
BAZzz_BAZ
我可以选择直到第一个
_
:SUBSTRING ([COLUMN], 0, CHARINDEX('/', [COLUMN], 0))
但是如何将其扩展到第二个下划线?
最佳答案
您可以使用 Cross Apply
,以下查询将为您提供包含数据的索引。
declare @T table
(
Name_Level varchar(25)
)
insert into @T values
('FOO_BAR_3423423_dsadsa'),
('BAZ_BAZzz_dsadsa'),
select SUBSTRING(Name_Level,0,p2.pos) As Data,p1.Pos as firstOccurance,p2.pos As secondOccurance
from @T
cross apply (select (charindex('_', Name_Level))) as P1(Pos)
cross apply (select (charindex('_', Name_Level, P1.Pos+1))) as P2(Pos)
结果:
-------------------------
FOO_BAR 4 8
BAZ_BAZzz 4 10
如果您想获得下一个索引,只需再添加一个
CrossApply
,它就会为您提供 _
的下一个索引。关于sql - 选择子字符串直到 SQL 中的第二个下划线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28811590/