SQL как найти конкретную строку или символ после нахождения первой и второй строки с помощью функции INSTR ()? - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь найти строку с символом "e", встречающуюся три раза в моей реляционной базе данных.Я уже нашел способ найти строку с символом 'e', ​​встречающуюся дважды, используя следующий код:

SELECT lastname
FROM participants
WHERE INSTR(lastname, 'e') AND INSTR(SUBSTRING(lastname,INSTR(lastname, 'e') + 1), 'e');

Как найти строку с символом "e", встречающуюся три раза в строке?

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018
SELECT LENGTH('efooefooe') - LENGTH(REPLACE('efooefooe', 'e', ''));

Дает 3.

Итак:

SELECT lastname
FROM participants
WHERE LENGTH(lastname) - LENGTH(REPLACE(lastname, 'e', '')) = 3;
0 голосов
/ 04 декабря 2018

Используйте like.Для трех или более появлений:

where lastname like '%e%e%e%'

Для ровно трех появлений:

where lastname like '%e%e%e%' and lastname not like '%e%e%e%e%'

Если у вас есть сопоставление без учета регистра и вы хотите избежать поиска 'E', тогда преобразуйте вчувствительность к регистру.

0 голосов
/ 04 декабря 2018

Замените 'e' пустой строкой и сравните длину исходной строки со строкой с заменой 'e'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...