Query Mysql con carattere jolly su stringhe numeriche
Domanda
Sto cercando di interrogare una tabella mysql che contiene stringhe di numeri (ovvero "1,2,3,4,5").
Come faccio a cercare per vedere se ha '1' ma non '11' in mente se è '9,10' '9%' non funziona ??
fissi!
(field like '10' OR field like '%,10,%' OR field like '%,10' OR field like '10,%')
Soluzione
È necessaria la funzione FIND_IN_SET . A proposito, '9%' dovrebbe funzionare, se la colonna contiene i valori specificati, sei sicuro di eseguire query
SELECT * FROM table WHERE field LIKE '9%'?
Altri suggerimenti
Potresti provare la funzione find_in_set
select find_in_set('1','1,2,3,11,12')
Anche SQL standard può farlo:
...
WHERE
',' + SetValue + ',' LIKE '%,1,%'
AND ',' + SetValue + ',' NOT LIKE '%,11,%'
Questa espressione non può utilizzare un indice, pertanto le prestazioni diminuiranno rapidamente con l'aumentare delle dimensioni della tabella.
Per una migliore prestazione il tuo tavolo dovrebbe essere adeguatamente normalizzato, ad esempio
SetId SetValue
1 1
1 2
1 3
1 4
1 5
anziché
SetId SetValue
1 '1,2,3,4,5'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow