sql >> Databáze >  >> RDS >> Mysql

Vyhledejte pole příspěvků v hodnotě sloupce odděleného čárkami

Řešení 1:

Jak poznamenal @Jens, je špatný návrh DB ukládat hodnoty jako CSV. Takže prvním řešením by bylo změnit návrh DB, protože opravdu nevím, co ukládáte a jaký je účel vašeho DB/kódu I neumí napsat schéma ani dát žádný smysluplný návrh.

Řešení 2:

Použijte MySQL find_in_set funkce.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Řešení 3:

Můžete použít LIKE operátor. (Někteří členové mě pravděpodobně zabijí za to, že jsem to navrhl, ale pokud nechcete změnit návrh DB – toto je kreativní možnost).

Zkontrolujeme následující kód:

SELECT id FROM table WHERE filter_data LIKE '%2,%'

Problém je v tom, že vrátí id pole s 22, ve sloupci filter_data. Proto budete muset změnit data v tomto sloupci tak, aby , se objeví také jako první a poslední znak. Například:

id | filter_data   |
---|---------------
1  |,2,3,45,67,4,  |
2  |,2,3,55,33,5,7,|

A nyní můžete provést následující:

SELECT id FROM table WHERE filter_data LIKE '%,2,%'

Pokud máte více "filtrů vyhledávání", můžete kombinovat LIKE s OR operátor.




  1. Relační databáze

  2. Jak porovnat dvě pole/sloupce v podmínce?

  3. GWFG v Oracle RAC

  4. ORA-22905 - při dotazu na typ tabulky příkazem select