2016-09-08 6 views
0

2番目と3番目の文字がどこにあるかを検索する必要があります。そして姓はTomeloosではありません。文字列内で互いに同じ文字の2つを検索

この部分がtrueを返すことはありませんので、私はこのクエリ

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

しかし、予想このdoesntの仕事のように思い付いた:

AND INSTR(naam, 'o') = 3 

それが第2の位置にOが表示されますので。

私はこれをINSTR機能でどのように達成できるか知っていますか?あなたはsubstr

と仕事をしなければならない おかげ

答えて

1

あなたは、この作品

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

この

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

を試してみてくださいSQL INSTRの特定のフレーバーで開始位置を指定することができますが、これは、MySQLの場合はそうではありません。したがって、INSTRでは、位置2に 'o'が含まれていない部分文字列を最初に取得することはできません。LIKEは、達成しようとしているものに比べてはるかに適しているようです。

WHERE naam LIKE '_oo%' 
+0

ありがとう!これはうまくいきますが、PaulFが投稿した答えは、私が探しているものです。したがって、私はあなたの答えを投票しました。 – Bas

関連する問題