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,%') 
È stato utile?

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
scroll top