Portál AbcLinuxu, 2. listopadu 2025 03:19
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
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;%'
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. 
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. 
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. 
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 
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.