在字符串中搜索彼此相同的2个字符

时间:2016-09-08 12:27:19

标签: mysql

我需要搜索第二个和第三个字符为oo的名称。姓氏不是Tomeloos。

我想出了这个查询

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

但是就像预期的那样,这不起作用,因为这部分将永远不会返回true:

AND INSTR(naam, 'o') = 3

因为它会在第二个位置看到o。

有谁知道如何使用INSTR功能实现这一目标? 感谢

3 个答案:

答案 0 :(得分:1)

您必须使用substr

试试这个

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';

答案 1 :(得分:1)

虽然在某些版本的SQL INSTR允许指定起始位置,但MySQL的情况并非如此。因此,INSTR无法在不首先获得不包含“' o”的子字符串的情况下进行此操作。在第2位。

尽管如此,LIKE似乎更适合您尝试实现的目标:

WHERE naam LIKE '_oo%'

答案 2 :(得分:1)

你可以尝试

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