sql >> Database >  >> RDS >> Mysql

Zoek berichtarray in door komma's gescheiden kolomwaarde

Oplossing 1:

Zoals @Jens opmerkte, is het een slecht DB-ontwerp om waarden op te slaan als CSV. Dus de eerste oplossing zou zijn om je DB-ontwerp te wijzigen, omdat ik niet echt weet wat je opslaat en wat het doel is van je DB / code I kan geen schema schrijven of een zinvolle suggestie geven.

Oplossing 2:

Gebruik MySQL's find_in_set functie.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Oplossing 3:

U kunt de LIKE . gebruiken exploitant. (Sommige leden zullen me waarschijnlijk vermoorden omdat ik het voorstel, maar als je je DB-ontwerp niet wilt wijzigen, is dit een creatieve optie).

Laten we de volgende code eens controleren:

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

Het probleem is dat het de id van een veld teruggeeft met 22, in de filter_data's kolom. Daarom moet u de gegevens onder die kolom wijzigen, dus , verschijnt ook als eerste en laatste karakter. Bijvoorbeeld:

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

En nu kunt u het volgende doen:

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

Als u meerdere "zoekfilters" heeft, kunt u de LIKE . combineren s met een OR telefoniste.




  1. Een lijst met triggers retourneren in SQL Server

  2. OpenVPN gebruiken om toegang tot uw databasecluster in de cloud te beveiligen

  3. Hoe de totale omzet per maand berekenen in MySQL?

  4. In welke volgorde worden ON DELETE CASCADE-beperkingen verwerkt?