Мама мыла раму папе. Как сравнить по буквам и отсортировать их по количеству свопадений? - MySQL

Узнай цену своей работы

Формулировка задачи:

Дано таблица, длина у слов одинакова: мама мыла раму папе авто есть слово для сравнения:папа соответственно совпадений со буквам папе - 3 (ПАПе) мама - 2 (мАмА) мыла - 1 (мылА) раму - 1 (рАму) авто - 0 (авто) если что текст на английском, т.ч. не надо морочится с длиной символов в utf-8 и т.п. Всем заранее спасибо!
P.S. сейчас выбираю все из базы и каждый элемент сравниваю в лоб
Листинг программы
  1. $good = 0;
  2. for($x=0;$x < strlen($aa2);$x++){
  3. if($aa2[$x] == $answ[$x]){
  4. $good++;
  5. }

Решение задачи: «Мама мыла раму папе. Как сравнить по буквам и отсортировать их по количеству свопадений?»

textual
Листинг программы
  1. WITH q AS (SELECT 'папа' AS a FROM dual)
  2. , w AS (SELECT 'мама' AS a FROM dual UNION ALL
  3. SELECT 'мыла' FROM dual UNION ALL
  4. SELECT 'раму' FROM dual UNION ALL
  5. SELECT 'папе' FROM dual UNION ALL
  6. SELECT 'авто' FROM dual)
  7. SELECT * FROM (SELECT q.a AS qa, w.a AS wa,
  8. ((CASE WHEN substr(q.a,1,1) = substr(w.a,1,1)
  9.      THEN 1
  10.      ELSE 0 END)
  11. + (CASE WHEN substr(q.a,2,1) = substr(w.a,2,1)
  12.      THEN 1
  13.      ELSE 0 END)
  14. + (CASE WHEN substr(q.a,3,1) = substr(w.a,3,1)
  15.      THEN '1'
  16.      ELSE '0' END)
  17. + (CASE WHEN substr(q.a,4,1) = substr(w.a,4,1)
  18.      THEN '1'
  19.      ELSE '0' END)) AS qwer
  20.  FROM q, w)
  21.  WHERE qwer > 2

Объяснение кода листинга программы

  1. Создается CTE (Common Table Expression) q с одним столбцом a, содержащим значение 'папа'.
  2. Создается CTE w с одним столбцом a, содержащим значения 'мама', 'мыла', 'раму', 'папе', 'авто'.
  3. Создается запрос, который выбирает каждую букву из строк 'папа' и 'мама мыла раму папе авто', и проверяет, совпадают ли они. Для каждой пары букв, которые совпадают, добавляется единица к общему числу совпадений.
  4. Результат этого запроса (число совпадений) используется в следующем запросе, где он фильтруется таким образом, чтобы остались только те строки, где число совпадений больше 2.
  5. Выводятся результаты, которые содержат исходные строки и количество совпадений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы