select THING from FOLDER where THING like '%-%' and ...
返回如下内容:
abc097-01
def982-02
ghi13344-01
ghi13344-02
现在我需要更改此查询,以便在截断“ - ”之后的部分后可以计算不同的名称。
所以对于上面的例子,我得到3作为结果(“abc097”,“def982”和“ghi13344”)。
如何在SQL中编写?
答案 0 :(得分:1)
您可以使用CHARINDEX或PATINDEX函数查找“ - ”的位置,然后使用LEFT或SUBSTRING函数:
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.