Domanda

Sto avendo qualche difficoltà a confrontare i valori trovati nei campi VARCHAR.

Ho una tabella con i prodotti e ogni prodotto ha il volume. I memorizzare il volume in un campo VARCHAR ed è di solito un numero (30, 40, 200 ..), ma ci sono dei prodotti più volumi e la loro dati sono memorizzati separati da una virgola, in questo modo 30; 60;. 80

So che la memorizzazione di più volumi del genere non è raccomandato, ma devo lavorare con le cose come stanno.

Sto cercando di attuare una ricerca in base alla funzione di volume per i prodotti. Voglio visualizzare anche i prodotti che hanno un volume più grande o uguale rispetto a quello cercato. Questo non è un problema con i prodotti che hanno un unico volume, ma si tratta di un problema con i prodotti multipli di volume.

Forse un esempio renderà le cose più chiare: Diciamo che ho un prodotto con questo nella sua campo del volume: 30; 40; 70; 80. Se un utente ha cercato per un volume, consente di dire 50, voglio che prodotto da visualizzare.

Per fare questo ho pensato di scrivere la mia funzione di MySQL proprio personalizzato (non ho mai questo prima), ma forse qualcuno in grado di offrire una soluzione diversa.

Mi scuso per il mio povero inglese, ma spero che ho fatto la mia domanda chiara.

Grazie.

È stato utile?

Soluzione

Hai solo bisogno di confrontare con il valore più grande. Sono i volumi sempre memorizzati in ordine crescente da sinistra a destra? Se è così allora confrontare con il valore dopo l'ultimo punto e virgola, se presente. È possibile utilizzare SUBSTRING_INDEX per selezionare l'ultimo valore.

SELECT *
FROM products
WHERE CAST(SUBSTRING_INDEX(volume, ';', -1) AS UNSIGNED) >= 50
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top