Portál AbcLinuxu, 12. května 2025 19:03

Dotaz: MySQL složitější podmínka na jedno pole where

vasek125 avatar 21.1.2007 23:08 vasek125 | skóre: 30 | Mladá Boleslav
MySQL složitější podmínka na jedno pole where
Přečteno: 785×
Odpovědět | Admin
Dá se nějakým způsobem v MySQL docílit toho, aby podmínka where vyhledala určitý text v nějakém poli tabulky? Jako:
SELECT ip FROM adresy WHERE `user`='tonda'
kde user obsahuje: pepa franta tonda
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.1.2007 23:12 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Odpovědět | | Sbalit | Link | Blokovat | Admin
... LIKE '%tonda%'
bazil avatar 21.1.2007 23:22 bazil | skóre: 33 | blog: sluje | Miroslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
tohle (pokudvim) vyhledá neconecoTONDAneconeco ... (tucne je to jen pro zvyrazneni) takze LIKE 'tonda'
vasek125 avatar 22.1.2007 00:21 vasek125 | skóre: 30 | Mladá Boleslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Takže
SELECT ip FROM adresy WHERE `user` LIKE 'tonda'
Vyjme to jen to tonda? Nechci, aby to vyhledalo i tonda třeba v nejakytexttondaneco
bazil avatar 22.1.2007 00:39 bazil | skóre: 33 | blog: sluje | Miroslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
jo ... a co třeba si to vyzkoušet ? ;-)
vasek125 avatar 22.1.2007 06:49 vasek125 | skóre: 30 | Mladá Boleslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Vyzkouším dnes až bude čas, dík.
22.1.2007 11:06 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Pokud moje znalosti stačí, tak podmínka like 'tonda' je úplně to samé jako ='tonda'
22.1.2007 11:11 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
V některých db (no, možná je jenom jedna :-)) se liší v case-sensitivity (tedy že = je case-sensitive, LIKE není).
22.1.2007 10:44 billgates | skóre: 27
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chvilu mi trvalo pochopit, aka je vlastne otazka. Ak tomu rozumiem spravne, tak jedna bunka obsahuje string "pepa franta tonda". V tom pripade LIKE 'tonda' urcite fungovat nebude. Urcite je na to nejake sofistikovanejsie riesenie, ale ako prva mi napadla tato hroza:
SELECT ip FROM adresy WHERE user LIKE '% tonda' OR user LIKE 'tonda %' OR user LIKE '% tonda %' OR user LIKE 'tonda'
Je to hrozne, ale malo by to fungovat.
22.1.2007 10:55 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Odpovědět | | Sbalit | Link | Blokovat | Admin
asi bych to zkusil takto:

SELECT FIND_IN_SET("tonda",REPLACE("pepa franta tonda tondach"," ",","))>0;

tedy:

SELECT ip FROM adresy WHERE FIND_IN_SET("tonda",REPLACE(user," ",","))>0;

Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
22.1.2007 11:03 billgates | skóre: 27
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Toto je naozaj elegantne.
vasek125 avatar 22.1.2007 16:48 vasek125 | skóre: 30 | Mladá Boleslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
jo tohle funguje
22.1.2007 12:30 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Odpovědět | | Sbalit | Link | Blokovat | Admin
SELECT ip FROM adresy WHERE `user` REGEXP '[[:<:]]tonda[[:>:]]';
viz dokumentace
22.1.2007 12:39 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Pěkné, ale

select "a.tonda" REGEXP '[[:<:]]tonda[[:>:]]';

se vyhodnotí taky jako shoda.
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
22.1.2007 13:52 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Ze zadání jsem implicitně předpokládal, že user obsahuje jména oddělená mezerou, přičemž jméno sestává z 1n písmen. Jestli může jméno obsahovat i nějaké další znaky, měl by to autor do zadání explicitně uvést, nebo alespoň dát do příkladu nějaké jméno tohoto typu :-)
22.1.2007 13:21 rich
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Odpovědět | | Sbalit | Link | Blokovat | Admin
select ip from adresy where user in ('tonda','pepa','franta')
vasek125 avatar 22.1.2007 18:14 vasek125 | skóre: 30 | Mladá Boleslav
Rozbalit Rozbalit vše Re: MySQL složitější podmínka na jedno pole where
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky všem za rady.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.