Выборка по заглавным буквам - MySQL

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

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

Есть таблица с полями id, name. Подскажите, пожалуйста, как сделать выборку по заглавным буквам: Запрос "hp":

H

ewlett

P

ackard,

HP

Tec

hp

oint

HP

C Сейчас исполльзую вот такой запрос:
SELECT * FROM brand WHERE name LIKE %$brandName% LIMIT 5
но он, естественно, выдает только

HP

Tec

hp

oint

HP

C

Решение задачи: «Выборка по заглавным буквам»

textual
Листинг программы
$sqlQuery = "SELECT * FROM brand WHERE name REGEXP :brand LIMIT 5";
    $stmt = $db->prepare($sqlQuery);
 
    if (strlen($brandName) == 2) {
        $stmt->bindValue(":brand" , "(^$brandName[0].*[ &_-]+$brandName[1].*)|(.*$brandName.*)", PDO::PARAM_STR);
    } else {
        $stmt->bindValue(":brand" , ".*$brandName.*", PDO::PARAM_STR);
    }
 
    $stmt->execute();

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

  1. Создается SQL запрос для выборки данных из таблицы brand
  2. Запрос содержит условие WHERE для фильтрации результатов по полю name
  3. В запросе используется функция REGEXP для сопоставления шаблона с данными
  4. Параметр :brand используется для передачи значения в запрос
  5. Значение параметра :brand подготавливается с помощью функции bindValue
  6. Если длина значения $brandName равна 2, то используется сложный шаблон для сопоставления
  7. Если длина значения $brandName не равна 2, то используется простой шаблон для сопоставления
  8. Выполняется запрос с помощью функции execute

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


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

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

8   голосов , оценка 4.375 из 5