Portál AbcLinuxu, 7. května 2025 10:24

Dotaz: REGEXP v MySQL 4.0

9.9.2009 19:39 Vojta
REGEXP v MySQL 4.0
Přečteno: 412×
Odpovědět | Admin

Dobrý den,

řeším následující problém.

Mám v databázi sloupeček kategorie s hodnotami např.;

"5;7;9;2;15"

nebo může vypadat třeba

"15"

nebo

"6;7;5;15"

Dejme tomu, že ho chci vybrat podle toho, že obsahuje hodnotu 5.

Pokud použiji "SELECT * FROM tabulka LIKE '%5%' ORDER BY id" tak se samozřejmě vybere i řádek obsahující 15. Je možné (zřejmě pomocí REGEXP) vybrat jen řádky, které obsahují 5?

Doufám, že je to srozumitelné :)

Díky za každou radu

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.9.2009 21:06 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: REGEXP v MySQL 4.0
Odpovědět | | Sbalit | Link | Blokovat | Admin

Když se na konec řádku připojí ; tak se může použít něco takového (nejsem si jist, že to bude fungovat na mysql)

where sloupec + ';' like '%;5;%'

default avatar 9.9.2009 21:16 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: REGEXP v MySQL 4.0

Když už takhle, pak

WHERE (';' || sloupec || ';') LIKE '%;5;%'

ale to by mohlo zamezit využití indexu.

default avatar 9.9.2009 21:13 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: REGEXP v MySQL 4.0
Odpovědět | | Sbalit | Link | Blokovat | Admin
SELECT
    *
FROM
    tabulka t1
WHERE
    t1.clmn LIKE '5;%' OR t1.clmn LIKE '%;5;%' OR t1.clmn LIKE '%;5'
/

Je to performance killer, ale mělo by to fungovat. :-D

Jinak na Oracle se to dá řešit takto:

SELECT
    *
FROM
    tabulka t1
WHERE
    REGEXP_LIKE(t1.clmn, :REGULAR_EXPRESSION)
/

MySQL bude mít určitě podobnou funkci. Navíc bych tipoval, že dokáže lépe využít indexy. :-D

Kdyby tě zajímalo, jak pod Oracle to CSV převést do ResultSetu jedním dotazem — tedy z tabulky

 CLMN_ID  |  CLMN_VALUE
----------+-------------
       1  |  1;2;3;4
       2  |  5;6

dostat

 CLMN_ID  |  CLMN_VALUE_VAL
----------+-----------------
       1  |  1
       1  |  2
       1  |  3
       1  |  4
       2  |  5
       2  |  6

zadej novou otázku do poradny. :-)

10.9.2009 14:12 jakub hajek
Rozbalit Rozbalit vše Re: REGEXP v MySQL 4.0

No a ten "spilt" by me zrovna celkem zajimal, ale ne ze bych to aktualne k necemu potreboval, takze dotaz na to psat nebudu :-)

Lec kdyby to melo nejake jednoduche reseni a chtelo se ti, tak to sem prosim postni, dik ;-)

default avatar 10.9.2009 21:41 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: REGEXP v MySQL 4.0

Jednoduché to samozřejmě je. Ale na pastnutí to zase není. Udělám o tom blogspot a pastnu link. Stay tuned. :-D

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.