sql >> Database teknologi >  >> RDS >> Mysql

Søg efter array i kommasepareret kolonneværdi

Løsning 1:

Som @Jens kommenterede, er det et dårligt DB-design at gemme værdier som CSV. Så den første løsning ville være at ændre dit DB-design, da jeg ikke rigtig ved, hvad du gemmer, og hvad er formålet med din DB/kode I kan ikke skrive et skema eller give noget meningsfuldt forslag.

Løsning 2:

Brug MySQL's find_in_set funktion.

SELECT id FROM tableWHERE FIND_IN_SET(searchFilterHere, filter_data) 

Løsning 3:

Du kan bruge LIKE operatør. (Nogle medlemmer vil sikkert dræbe mig for at foreslå det, men hvis du ikke vil ændre dit DB-design - dette er en kreativ mulighed).

Lad os tjekke følgende kode:

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

Problemet er, at det vil returnere id'et for et felt med 22, i filter_datas kolonne. Derfor bliver du nødt til at ændre dataene under den kolonne, så , vises også som det første og sidste tegn. For eksempel:

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

Og nu kan du gøre følgende:

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

Hvis du har flere "søgefiltre", kan du kombinere LIKE s med en ELLER operatør.




  1. SQL, tilføjelse af data til en tabel

  2. MySQL fejl ved indsættelse af data indeholdende apostrof (enkelt anførselstegn)?

  3. Ansible idempotent MySQL installation Playbook

  4. Prisen for ikke at rense