如何从SQL中的字符串中提取值

时间:2017-11-07 17:28:09

标签: sql sql-server-2008 tsql

我的列有不同的长度值,我想提取第二个破折号之前的所有值。 以下是

列中的一些值
1AA-00001-20170101
AAAA-10010-20161201
1BBB2-22222-20151105

如何在SQL中获取以下值

1AA-00001
AAAA-10010
1BBB2-22222

3 个答案:

答案 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
相关问题