Autor | Zpráva | ||
---|---|---|---|
Chuchycek Profil |
#1 · Zasláno: 5. 11. 2012, 10:41:17
Dobrý den,
chtěl bych se zeptat jestli existuje v sql nějaká funkce, která by mi dokázala najít nějaký znak. Nevím jak to říci přesně, tak uvedu příklad. SELECT * FROM tabulka WHERE kategorie = '1' a já v té kategori mám uložené hodnoty v tomto formátu 1.2.3.5.6.8 Předem děkuji a omlovám se za hektický popis :-) |
||
mimochodec Profil |
#2 · Zasláno: 5. 11. 2012, 10:44:27
Jdeš na to špatně. Podívej se na Výpis záznamů a délka dotazu
|
||
Chuchycek Profil |
#3 · Zasláno: 5. 11. 2012, 11:37:45
Jenže to se mi zdá takový divný mít tam o jednu tabulku navíc.. a todle je jako jediný reálný řešení?
|
||
panther Profil |
#4 · Zasláno: 5. 11. 2012, 11:41:42
Chuchycek:
„a todle je jako jediný reálný řešení?“ jediné rozumné a správné. S tím tvým návrhem bys měl později dost problémů, doporučuji návrh DB upravit, dokud je čas. „se mi zdá takový divný mít tam o jednu tabulku navíc“ proč? Počet tabulek není omezený a správný počet je přesně takový, kolik jich reálně potřebuješ. |
||
ShiraNai7 Profil |
#5 · Zasláno: 5. 11. 2012, 11:41:53
Chuchycek:
Není to jediné reálné, ale spíš jediné "správné" a hlavně efektivní. Co ti vadí na párovací tabulce? |
||
peta Profil |
Tabulka navic je nejlepsi reseni, protoze se s ni da pak dobre vybirat, co potrebujes.
LIKE, IN, REGEXP, FIND_IN_SET LIKE '%1%' ti najde i '.15.' IN to potrebuje rozdelit na array REGEXP v tom se to da zapsat ^1$|^1.|.1$|^.1.$ (tak nejak, vsechny 4 moznosti) FIND_IN_SET je k tomu primo urcene http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_find-in-set Ale vsechny tyhle metody jsou dost neefektivni a pouzitelne spis na vyjimecne dotazy nez casto opakovane. Zkus mrknout tady, jak se do toho zamotal... procházení hodnotami vrácenými s DB |
||
Chuchycek Profil |
#7 · Zasláno: 5. 11. 2012, 18:20:08
peta díky, přesně todle jsem hledal
Ale už jsem zvolil řešení s párovací tabulkou, vypadá a je to efektivní, takže všem děkuji za rady. |
||
Časová prodleva: 11 let
|
0