Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: [mysql] NOT LIKE

  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [mysql] NOT LIKE

    Scusate,
    non ricordo la sintassi mysql per escludere dalla ricerca delle parole contenenti un qualcosa...

    Ho provato con:
    Codice PHP:
    SELECT *
    FROM
      TEMP_DB WHERE 
    (posizione NOT LIKE '%qualcosa%'); 
    ma su 3000 record me ne restituisce sempre 3000,
    quindi sicuramente non è la sintassi giusta...
    わさび

  2. #2
    La sintassi per NOT LIKE e' corretta. verifica con una stampa della query cosa risolve la variabile. Le parentesi non servono, ma se ci sono devono essere risolte, meglio toglierle.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da piero.mac
    La sintassi per NOT LIKE e' corretta. verifica con una stampa della query cosa risolve la variabile. Le parentesi non servono, ma se ci sono devono essere risolte, meglio toglierle.

    Hai ragione!
    In pratica la fagianata era altrove:
    La sintassi completa che avevo usato era
    Codice PHP:
    SELECT *
    FROM
      TEMP_DB WHERE 
    ((posizione NOT LIKE '%qualcosa%'
    OR (
    posizione NOT LIKE '%qualcaltracosa%')
    OR (
    posizione NOT LIKE '%qualcosaancora%')); 
    e quindi usando gli OR anzicchè gli AND giustamente tirava di nuovo fuori tutti i record nessuno escluso... =_='
    Grazie piero.mac
    わさび

  4. #4
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Visto che ci sono ti chiedo un'altra cosa che non c'entra con questa... se possibile

    il database ha questi campi

    nome | cogn | email1 | email2 | email3 | posizione

    email1, email2 e email3 andrebbero fusi in un solo campo 'email', prendendo il primo se pieno, il secondo se pieno, oppure il terzo... (uno dei tre è pieno sicuramente)

    io personalmente lo risolverei con un programmino php,
    ma mi chiedevo se si potesse fare tutto in mysql :master:
    わさび

  5. #5
    Non l'ho mai provato ma teoricamente dovrebbe funzionare...

    Mi baso su quanto mi dici tu, cioe' uno dei tre e' valorizzato ma gli altri due no. Concatenare i campi email separati da uno spazio, dovresti trovare il nome con spazi (uno o due) prima e/o dopo. Questi si tolgono con TRIM(). Se invece gli indirizzi e-mail fossero presenti in piu' di un campo bisognera' fare diversamente.
    codice:
    SELECT trim(concat(email1,' ',email2,' ',email3)) as email
    FROM tabella

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Perdonami piero.mac, ma forse mi sono espresso male grazie cmq per la risposta

    Nei tre campi sicuramente uno dei 3 è pieno, ma potenzialmente potrebbero esserlo tutti e 3. Quindi immaginavo magari di dover utilizzare una tabella temporanea... ma non sono molto pratico e quindi ho costruito un programmillo php...
    ...cmq siccome mi capita spesso di dover fare operazioni simili, mi chiedevo se si potesse fare tutto proprio in mysql
    わさび

  7. #7
    Lo supponevo, altrimenti non avrebbe senso farne tre di campi.

    Dipende quindi da come devi gestire questi tre campi, se ne vuoi uno solo in presenza di molti, oppure se ne vuoi tanti quanti sono.

    Credo comunque si debba utilizzare un check nei dati estratti, come gia' fai.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    SELECT CASE WHEN email1 IS NOT NULL THEN email1 WHEN email2 IS NOT NULL THEN email2 WHEN email3 IS NOT NULL THEN email3 END

    Se non hai valori NULL nei campi sostituisci i test su NOT NULL con != ''

  9. #9
    Originariamente inviato da luca200
    SELECT CASE WHEN email1 IS NOT NULL THEN email1 WHEN email2 IS NOT NULL THEN email2 WHEN email3 IS NOT NULL THEN email3 END

    Se non hai valori NULL nei campi sostituisci i test su NOT NULL con != ''
    ciao Luca200,

    mi hai anticipato

    aspettavo la risposta da Trinità in merito alla condizione di quanti ne vorrebbe stampare, se uno solo oppure tutti quelli che trova. Se li deve stampare tutti cioe' uno, oppure due oppure tre.... oppure stampare solo il primo che trova. Con lo switch prende solo il primo che trova ovviamente.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da piero.mac
    aspettavo la risposta da Trinità in merito alla condizione di quanti ne vorrebbe stampare, se uno solo oppure tutti quelli che trova. Se li deve stampare tutti cioe' uno, oppure due oppure tre.... oppure stampare solo il primo che trova. Con lo switch prende solo il primo che trova ovviamente.

    Forse non è stato chiarissimo, ma l'aveva detto...


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.