2010-12-10 7 views
2
select substring(datapath,1,5), COUNT(substring(datapath,1,5)) from batchinfo 
where datapath like '%thc%' 
group by datapath 
having COUNT(substring(datapath,1,5))>1 

테이블에있는 각 부분 문자열의 수를 계산하려고하는데 어떤 이유로 전체 문자열을 계산합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?sql - 전체 문자열 대신 하위 문자열 비교

+0

간단한 예를 제공 할 수 있습니까? – Unreason

답변

2

. 카운트에서 하위 문자열 기능을 반복 할 필요도 없습니다.

select substring(datapath,1,5), COUNT(*) 
    from batchinfo 
    where datapath like '%thc%' 
    group by substring(datapath,1,5) 
    having COUNT(*)>1 
1

시도 :

당신은 단순히 당신이 대신 전체 데이터 경로의 계산하려는 문자열에 의해 GROUP 필요
select d, count(*) 
from 
(
    select substring(datapath,1,5) d from batchinfo 
    where datapath like '%thc%' 
) 
group by d 
having COUNT(*) > 1 
+0

부분 문자열을 반복하지 않으므로이 기능이 마음에 들었습니다. – BlackICE