我的列有不同的长度值,我想提取第二个破折号之前的所有值。 以下是
列中的一些值1AA-00001-20170101
AAAA-10010-20161201
1BBB2-22222-20151105
如何在SQL中获取以下值
1AA-00001
AAAA-10010
1BBB2-22222
答案 0 :(得分:2)
您可以使用:
SELECT LEFT(col, CHARINDEX( '-', col, CHARINDEX('-', col)+1)-1)
FROM table;
<强> Rextester Demo 强>
答案 1 :(得分:2)
你的字符串的结构似乎非常规范。看来你可以做到:
select left(col, len(col) - 9)
答案 2 :(得分:0)
另一种方式
-- sample data
declare @table table (somestring varchar(100));
insert @table
values ('1AA-00001-20170101'), ('AAAA-10010-20161201'),('1BBB2-22222-20151105');
-- solution
select somestring, newstring =
parsename(replace(somestring,'-','.'),3)+'-'+
parsename(replace(somestring,'-','.'),2)
from @table;
<强>结果
somestring newstring
--------------------- ------------
1AA-00001-20170101 1AA-00001
AAAA-10010-20161201 AAAA-10010
1BBB2-22222-20151105 1BBB2-22222