Autor | Zpráva | ||
---|---|---|---|
hexcross Profil |
#1 · Zasláno: 20. 3. 2012, 14:05:11
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 |
#2 · Zasláno: 20. 3. 2012, 14:12:11
mě napadá
$sql = mysql_query("SELECT * FROM products WHERE replace(name,' ','') LIKE '%".$search."%' ") |
||
Tori Profil |
#3 · Zasláno: 20. 3. 2012, 17:01:34
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 |
#4 · Zasláno: 21. 3. 2012, 11:06:16
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 |
#5 · Zasláno: 21. 3. 2012, 13:40:14
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));
|
||
Časová prodleva: 12 let
|
0