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

Cerca l'array di post in un valore di colonna separato da virgole

Soluzione 1:

Come ha commentato @Jens, è un cattivo design del DB memorizzare i valori come CSV. Quindi la prima soluzione sarebbe cambiare il design del tuo DB poiché non so davvero cosa stai memorizzando e qual è lo scopo del tuo DB/codice I non posso scrivere uno schema o dare alcun suggerimento significativo.

Soluzione 2:

Usa find_in_set funzione.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Soluzione 3:

Puoi usare il LIKE operatore. (Alcuni membri probabilmente mi uccideranno per averlo suggerito, ma se non vuoi cambiare il design del tuo DB, questa è un'opzione creativa).

Controlliamo il seguente codice:

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

Il problema è che restituirà l'id di un campo con 22, nella colonna filter_data. Pertanto, dovrai modificare i dati in quella colonna quindi , apparirà anche come primo e ultimo carattere. Ad esempio:

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

E ora puoi fare quanto segue:

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

Se hai più "filtri di ricerca" puoi combinare il LIKE s con un OR operatore.