Witam,
Pisze aplikacje sklepu internetowego.
Nazwę produktu skladam za pomoca funkcji CONCAT z nazwy marki z jednej tabeli i nazwy samego produktu z drugiej. Robie alias tak powstalego stringa jako searchname.
Czyli cos w stylu:
  1. SELECT CONCAT(brand.name,' ',product.name) AS searchname

W wynikach moj wiersz ma miedzy innymi kolumne o nazwie searchname i zawartosci na przyklad:
"Whiskas szampon dla kota"

Problem w tym ze chce wyszukac po tej utworzonej nazwie produktu funkcją HAVING oraz LIKE, czyli:

  1. SELECT ... FROM .... HAVING searchname LIKE '%whiskas%'


Niestety mySQL nie znajduje mi powyzszego rekordu,
Gdy wpiszę "Whiskas" zamiast "whiskas" (wielkosc liter) to znajduje.
Jak moge wyszukac po nazwie zeby silnik SQL nie nie zwracal uwagi na wielkosc liter ?
Gdy nie stosuje funkcji CONCAT to zapytanie dziala, niestety klient zazyczyl sobie rownierz szukanie po nazwie marki.
Nie chce stosowac rozwiazan typu
  1. brand.name LIKE '%whiskas%' OR product.name LIKE '%whiskas'
, bo jak klient zazyczy sobie kolejne pole do tytulu to bedzie trzeba tutaj grzebac.

Ma ktos moze jakies pomysly ?

Dziekuje z gory i pozdrawiam

W koncu cos znalazlem:

  1. SELECT ... FROM .... HAVING LOWER(CAST(searchname AS char)) LIKE LOWER('%whiskas%')


Musialem rzutowac na typ char, inaczej nie chcial wykonac funkcji LOWER na polu searchname (nie wiem dlaczego)

Pozdrawiam