Мама мыла раму папе. Как сравнить по буквам и отсортировать их по количеству свопадений? - MySQL
Формулировка задачи:
Дано таблица, длина у слов одинакова:
мама
мыла
раму
папе
авто
есть слово для сравнения:папа
соответственно совпадений со буквам
папе - 3 (ПАПе)
мама - 2 (мАмА)
мыла - 1 (мылА)
раму - 1 (рАму)
авто - 0 (авто)
если что текст на английском, т.ч. не надо морочится с длиной символов в utf-8 и т.п.
Всем заранее спасибо!
P.S. сейчас выбираю все из базы и каждый элемент сравниваю в лоб
Листинг программы
- $good = 0;
- for($x=0;$x < strlen($aa2);$x++){
- if($aa2[$x] == $answ[$x]){
- $good++;
- }
Решение задачи: «Мама мыла раму папе. Как сравнить по буквам и отсортировать их по количеству свопадений?»
textual
Листинг программы
- WITH q AS (SELECT 'папа' AS a FROM dual)
- , w AS (SELECT 'мама' AS a FROM dual UNION ALL
- SELECT 'мыла' FROM dual UNION ALL
- SELECT 'раму' FROM dual UNION ALL
- SELECT 'папе' FROM dual UNION ALL
- SELECT 'авто' FROM dual)
- SELECT * FROM (SELECT q.a AS qa, w.a AS wa,
- ((CASE WHEN substr(q.a,1,1) = substr(w.a,1,1)
- THEN 1
- ELSE 0 END)
- + (CASE WHEN substr(q.a,2,1) = substr(w.a,2,1)
- THEN 1
- ELSE 0 END)
- + (CASE WHEN substr(q.a,3,1) = substr(w.a,3,1)
- THEN '1'
- ELSE '0' END)
- + (CASE WHEN substr(q.a,4,1) = substr(w.a,4,1)
- THEN '1'
- ELSE '0' END)) AS qwer
- FROM q, w)
- WHERE qwer > 2
Объяснение кода листинга программы
- Создается CTE (Common Table Expression)
q
с одним столбцомa
, содержащим значение 'папа'. - Создается CTE
w
с одним столбцомa
, содержащим значения 'мама', 'мыла', 'раму', 'папе', 'авто'. - Создается запрос, который выбирает каждую букву из строк 'папа' и 'мама мыла раму папе авто', и проверяет, совпадают ли они. Для каждой пары букв, которые совпадают, добавляется единица к общему числу совпадений.
- Результат этого запроса (число совпадений) используется в следующем запросе, где он фильтруется таким образом, чтобы остались только те строки, где число совпадений больше 2.
- Выводятся результаты, которые содержат исходные строки и количество совпадений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д