2016-09-08 2 views
0

두 번째 및 세 번째 문자가 oo 인 이름을 검색해야합니다. 그리고 성은 Tomeloos가 아닙니다. 문자열에서 서로 동일한 문자 2 개를 검색하십시오.

나는이 쿼리

SELECT * FROM student 
WHERE INSTR(naam, 'o') = 2 AND INSTR(naam, 'o') = 3 
AND naam NOT LIKE '%Tomeloos'; 

함께했다하지만이 나던 일을 예상처럼이 부분은 true를 반환하지 않습니다 때문에 :

AND INSTR(naam, 'o') = 3 

는 두 번째 위치에 오를 볼 수 있기 때문에.

아무도 내가 INSTR 기능으로 이것을 달성 할 수있는 방법을 알고 있습니까? 덕분에

답변

1

당신은이 작품

SELECT * FROM student 
WHERE SUBSTR(naam, 2, 2) = 'oo' 
AND naam NOT LIKE '%Tomeloos'; 
1

당신은 SQL INSTR의 특정 맛에 시작 위치를 지정 수 있지만이

SELECT * FROM student 
WHERE INSTR(naam, 'o') = 2 AND instr(substr(naam,instr(naam,'o')+1),'o')+instr(naam,'o') = 3 
AND naam NOT LIKE '%Tomeloos'; 
+0

감사를 시도 할 수 있습니다. 그러나 다른 대답은 더 우아합니다. 더 읽기 쉽습니다. – Bas

1

을 시도 substr

와 함께 일해야,이 MySQL을의 경우에는 해당되지 않습니다. 따라서 INSTR을 사용하면 위치 2에 'o'가 포함되지 않은 하위 문자열을 가져올 수 없습니다.

즉, LIKE은 달성하려는 목표에 훨씬 더 적합 해 보입니다.

WHERE naam LIKE '_oo%' 
+0

고마워! 이 방법이 효과적이지만 PaulF가 게시 한 답변은 내가 찾는 것입니다. 그러므로 나는 당신의 대답에 투표를했습니다. – Bas

관련 문제