Visualizzazione dei risultati da 1 a 7 su 7

Discussione: "in_array()" per MYSQL

  1. #1

    "in_array()" per MYSQL

    Ho un campo mysql così

    "5,3,2,5,7"

    e devo selezionarlo solo se 2 è contenuti in quel campo.

    in php userei in_array(2, $array); in mysql?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Una cosa così?
    $cerca = 2;
    SELECT * FROM tabella WHERE campo LIKE '%{$cerca}%';

  3. #3
    no, non volevo usare il LIKE. Non c'è qualcosa di più professionale?
    Altrimenti dovrei fare una relazione uno a molti vero?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Che vuol dire "qualcosa di più professionale"?
    Se col LIKE funziona perché non dovresti usarlo?
    Se ci fosse stata una funzione in_field() sarebbe stata più professionale pur dandoti lo stesso risultato e facendo la stessa cosa?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Like non va bene perchè troverebbe ad esempio anche 12,21 etc.

    select * from tabella where find_in_set(2,campo) > 0

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Questo trucco di salvare valori divisi per virgola mi ha sempre fatto girare i cosidetti.
    Quando invece mi trovavo a lavorare su db gia' fatti, e quindi non potevo togliere sta schifezza e fare una relazione vera, facevo where (campo like '%,2,%' or campo like '2,%' or campo like '%,2')

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da bubi1
    Questo trucco di salvare valori divisi per virgola mi ha sempre fatto girare i cosidetti.
    Quando invece mi trovavo a lavorare su db gia' fatti, e quindi non potevo togliere sta schifezza e fare una relazione vera, facevo where (campo like '%,2,%' or campo like '2,%' or campo like '%,2')
    Oppure anche così

    select * from tabella where campo regexp ',2,|^2,|,2$|^2$'

    La cosa migliore comunque è evitare soluzioni di questo genere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.