Мама мыла раму папе. Как сравнить по буквам и отсортировать их по количеству свопадений? - 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

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

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

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


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

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

13   голосов , оценка 3.923 из 5
Похожие ответы