SQL:截断后计算设置元素

时间:2011-02-17 10:51:32

标签: sql count set truncate

select THING from FOLDER where THING like '%-%' and ...

返回如下内容:

abc097-01
def982-02
ghi13344-01
ghi13344-02

现在我需要更改此查询,以便在截断“ - ”之后的部分后可以计算不同的名称。

所以对于上面的例子,我得到3作为结果(“abc097”,“def982”和“ghi13344”)。

如何在SQL中编写?

2 个答案:

答案 0 :(得分:1)

您可以使用CHARINDEXPATINDEX函数查找“ - ”的位置,然后使用LEFTSUBSTRING函数:

select COUNT(DISTINCT SUBSTRING(THING, 1, PATINDEX('%-%', THING) - 1))
from FOLDER
where THING like '%-%'

答案 1 :(得分:1)

Declare @tmp table (field nvarchar(100))
insert into @tmp values ('abc097-01')
insert into @tmp values ('def982-02')
insert into @tmp values ('ghi13344-01')
insert into @tmp values ('ghi13344-02')

select COUNT(*),SUBSTRING(field,0,CHARINDEX('-',field))
from @tmp
group by SUBSTRING(field,0,CHARINDEX('-',field))


select distinct(SUBSTRING(field,0,CHARINDEX('-',field)))
from @tmp -- to get distinct records.