代码之家  ›  专栏  ›  技术社区  ›  Hiren gardhariya

从SQL Server中的虚线字符串获取字符串

  •  -1
  • Hiren gardhariya  · 技术社区  · 10 年前

    我有一张包含虚线字符串的表。

    我要在最后一个破折号和第二个最后破折号之间的字符串

    短划线表示 -

    SQL Server表

    Create table tbl1 (vdocno varchar(200))
    
    insert into tbl1 values('Abcd-67-Hji-kok-74-Kio')
    insert into tbl1 values('Bki-6kdi7-jhfi-Hfjdji-koikk-7ji4-Kloio')
    

    所需输出值:

    74
    7ji4
    

    SQLFIDDLE

    1 回复  |  直到 10 年前
        1
  •  1
  •   Tanner    10 年前

    这不是最漂亮的,我毫不怀疑它可以更有效地完成,但如果需要,您可以改进以下内容:

    Demo SQL Fiddle

    create table tbl1 (vdocno varchar(200))
    
    insert into tbl1 values('Abcd-67-Hji-kok-74-Kio')
    insert into tbl1 values('Bki-6kdi7-jhfi-Hfjdji-koikk-7ji4-Kloio')
    
    select vdocno,
    reverse(substring(
        reverse(substring(vdocno, 1, LEN(vdocno) - CHARINDEX('-',REVERSE(vdocno)))), 
             1, CHARINDEX('-',
                            reverse(substring(vdocno, 1, LEN(vdocno) - CHARINDEX('-',REVERSE(vdocno))))
                         ) 
             - 1))
    from tbl1
    

    这将反转字符串并去掉最后一个破折号之前的部分,然后使用保留的字符串,删除第一个破折子之后的内容,然后将其反转为正确的方向。