Autor | Zpráva | ||
---|---|---|---|
rampa76 Profil |
#1 · Zasláno: 28. 11. 2012, 16:31:34
Zdravím, řeším takovou zapeklitou záležitost :-)
V databázi mám uložený text, který obsahuje string MG-5450. Přes vyhledávání na webu mi do selectu přijde string MG5450, protože každý nemusí vědet, jak zní přesný název a pomlčku klidně vynechá. Tedy ve vyhledávaném výrazu vlastně jeden znak chybí proti stringu, který je v DB a který bych chtěl i přesto najít. Můj dotaz: ví někdo jak čistě pomocí sql řešit tuto situaci, kdy potřebuji otestovat přidání navíc znaků a nevím předem jakých a nevím kam? Jediné co mě napadlo, je rozsekat ten string třeba php skriptem na jednotlivá písmena a za každé vložit .? a celé to poslat do where regexp 'm.?g.?5.?4.?0', jenže to má dlouhou odezvu a vůbec to zřejmě moc výkonnosti aplikace neprospěje. Nezná někdo elegantnější řešení? |
||
ShiraNai7 Profil |
rampa76:
Co třeba ukládat do databáze také "normalizovanou" verzi toho textu (bez pomlček, mezer a jiných znaků), to samé udělat s vyhledávaným výrazem a pracovat takto? |
||
rampa76 Profil |
#3 · Zasláno: 29. 11. 2012, 10:02:55
Jj, tohle už mě taky napadlo, ale chtěl jsem se tomu nějak šalamounsky vyhnout :-) Doufal jsem v nějaký trik, který mi unikl :-)
|
||
Tori Profil |
rampa76:
Takovéto vyhledávání (= porovnání dvou řetězců) bude podstatně rychlejší, než s regulárem. |
||
ShiraNai7 Profil |
#5 · Zasláno: 29. 11. 2012, 12:48:26
rampa76:
„ale chtěl jsem se tomu nějak šalamounsky vyhnout“ Pokud mají všechny texty stejný formát (např. písmena, pomlčka, čísla - regulár něco jako ([A-Z]+)-([0-9]+) ..), tak lze vyhledávaný výraz automaticky upravit do tohoto tvaru.
|
||
rampa76 Profil |
#6 · Zasláno: 29. 11. 2012, 16:44:09
ShiraNai7:
to má právě naprosto neočekávaný formát pokaždé, vyřešil jsem to přidáním sloupce s textem bez znaků, díky za tip :-) |
||
Časová prodleva: 11 let
|
0