2011-02-17 1 views
0
select THING from FOLDER where THING like '%-%' and ... 

:SQL : 절단 후 계산 설정 요소 같은 것들을 반환

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

지금 내가이 후 부분 절단 후, 고유 한 이름을 셀 수 있도록이 쿼리를 변경해야 '-'를.

위의 예에서 3을 결과로 얻습니다 ("abc097", "def982"및 "ghi13344").

어떻게 SQL로 작성할 수 있습니까? '-'

답변

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. 
1

당신의 위치를 ​​찾으려면 CHARINDEX 또는 PATINDEX 기능을 사용할 수 있습니다 LEFT 또는 SUBSTRING 기능을 사용하여 다음과 :

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

덕분에 많이 나는 PATINDEX 있도록 그러나 오라클에있어 분명히 작동하지 않습니다 (나는 INSTR을 사용했고 작동했습니다 :). 필자는 SQL 서버 나 오라클 관련 쿼리없이이 작업을 수행 할 수있는 표준 SQL 방법이 필요하다고 생각했습니다. 다시 한 번 감사드립니다 :) – Gugussee

+0

@ Gugussee 불행히도 문자열과 날짜 함수는 실제로 보편적이지 않습니다. 맞습니다. INSTR은 오라클과 같습니다. –