如何在特定字符后选择数据

时间:2019-02-08 11:59:32

标签: sql sql-server sql-server-2005 sql-server-2012

我想跳过第一个破折号以从第二个破折号中选择数据。

我使用了以下功能,从中我可以获得唯一的FLR

replace(right([Bin Code], charindex('-', reverse([Bin Code]))),'-','')

单元格包含此值

  

0771-B-3RD-FLR

所需的输出

  

3RD-FLR

2 个答案:

答案 0 :(得分:2)

如果从第二个连字符号开始一直是总是(您的描述有些矛盾),则可以使用STUFF和几个嵌套的CHARINDEX函数:< / p>

SELECT STUFF(V.S,1,CHARINDEX('-',V.S,CHARINDEX('-',V.S)+1),'') AS NS
FROM (VALUES('0771-B-3RD-FLR'))V(S);

答案 1 :(得分:-1)

一种方法是一次只将一个连字符替换为字符串:

select t.*, v2.bin_code
from t cross apply
     (values (stuff(t.bin_code, 1, charindex('-', t.bin_code), '')
     ) v(bin_code)(bin_code) cross apply
     (values (stuff(v1.bin_code, 1, charindex('-', v1.bin_code), '')
     ) v2(bin_code)(bin_code) ;