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

时间:2014-09-03 13:20:54

标签: sql sql-server sql-server-2008

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

我希望在最后一个破折号和第二个破折号之间添加字符串

短划线表示-

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 个答案:

答案 0 :(得分:1)

它不是最漂亮的,我毫不怀疑它可以更有效地完成,但是这里有一些可以根据需要改进的东西:

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

这会反转字符串并在最后一个破折号之前剥离该部分,然后使用保留字符串,它会在第一个破折号之后删除内容,然后再将其反转为正确的方式。