Sql 如何选择特定字符后的数据

Sql 如何选择特定字符后的数据,sql,sql-server,sql-server-2005,sql-server-2012,Sql,Sql Server,Sql Server 2005,Sql Server 2012,我想跳过第一个破折号,从第二个破折号中选择数据 我使用了下面的函数,从中我得到了唯一的FLR replace(right([Bin Code], charindex('-', reverse([Bin Code]))),'-','') 单元格包含此值 0771-B-3RD-FLR 期望输出 第三层 如果从你想要的第二个连字符开始(总是)(你的描述有点矛盾),你可以使用STUFF和几个嵌套的CHARINDEX函数: SELECT STUFF(V.S,1,CHARINDEX('-',V.S,CHA

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

我使用了下面的函数,从中我得到了唯一的FLR

replace(right([Bin Code], charindex('-', reverse([Bin Code]))),'-','')
单元格包含此值

0771-B-3RD-FLR

期望输出

第三层


如果从你想要的第二个连字符开始(总是)(你的描述有点矛盾),你可以使用
STUFF
和几个嵌套的
CHARINDEX
函数:

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

一种方法是一次咬一个连字符:

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) ;

那一个里面有很多语法错误。缺少右括号,两次声明列名,别名不一致。