Autor Zpráva
hexcross
Profil
Mám tabulku s produkty kde je sloupec name typu varchar a v něm např. produkt se jménem UV 130 při vyhledávání však zadám UV130 a samozřejmě mi to nenajde. Mohl bychto vyřešit vnořenými cykly a jinak "prasácky" ale rád bych to měl v jednom dotazu, existuje nějáká SQL funkce která ořízne pri porovnání zázanmů, z toho záznamu mezery?

Našel jsem pouze funkce LTRIM, RTRIM ale ta odstraní asi pouze mezery před a za, ani nevím jestli je podporovaná.

Zjednodušenej dotaz :
$sql = mysql_query("SELECT * FROM products WHERE name LIKE '%".$search."%' ");

Předem díky.
Ugo
Profil
mě napadá

$sql = mysql_query("SELECT * FROM products WHERE replace(name,' ','') LIKE '%".$search."%' ")
Tori
Profil
hexcross:
A nešlo by to dělat opačně? Tedy najít si opakující se vzorce ve jménech produktů a odvodit z nich pravidla (např. "pokud se název produktu skládá ze skupiny písmen a skupiny číslic, musí mezi nimi být mezera"), a na základě pravidel udělat filtr, kterým zadání od uživatele proženete. A pak ze strany administrace zajistit, že vkládané záznamy budou těmto pravidlům odpovídat.
hexcross
Profil
Ugo:
Děkuju, tohle funguje správně a přesně jak jsem potřeboval.

Tori:
To by bylo určitě efektivnější i elegantnější ale ty názvy produktů jsou celkem rozdílné - (6SN1146-1BB00-0DA1, OMP 400, 3RT10461BB44, RMP 60)(www.savetech.sk) jsou to různé skupiny pruduktů pokaždé podle jiných názvů, takže tady by to asi bohužel nešlo využít. Nebo nevím jak.
Tori
Profil
hexcross:
Pak je ještě možnost přidat sloupeček, kde bude upravené PN (bez mezer, bez pomlček, jen číslice a velká písmena), a zadání od uživatele upravit do stejného tvaru: $search = strtoupper(preg_replace('~[^a-z0-9]~i', '', $search));

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: