Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [mysql] replace nella clausola where

    ciao a tutti, sapete se è possibile utilizzare la funzione REPLACE nelle clausole del WHERE?
    Ecco un esempio:
    ho una tabella con 2 campi: id e nome
    Una query di questo tipo:
    codice:
    SELECT id FROM  `menu` WHERE (`nome` LIKE  'pizza' OR  `nome` LIKE  'pane')
    che voglio trasformare in una query simile (che ovviamente non funziona):
    codice:
    SELECT id FROM `menu` WHERE (nome like REPLACE("pizza pane"," "," OR nome LIKE '"))
    cioè sostituisco gli spazi con una concatenazione di clausole.

    Ho provato questa soluzione funzionante:
    codice:
    SELECT id FROM `menu` WHERE (nome like REPLACE("pizza"," ","' OR nome LIKE '"))
    mentre aggiungendo gli apici a pizza non mi restituisce nulla:
    codice:
    SELECT id FROM `menu` WHERE (nome like REPLACE("'pizza'"," ","' OR nome LIKE '"))
    Non utilizzo php perché vorrei creare un trigger, per automatizzare il processo.

    Altre soluzioni simili stanno in questi esempi:
    http://www.mysqlitalia.it/tips/82-sc...e-indirizzo-ip
    http://kedar.nitty-witty.com/blog/my...ring-into-rows

    Grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Magari ho capito male ma non ti basta un banale

    .. where nome in ('pizza','pane','pasta')

    ?

  3. #3
    purtroppo no, io gli passo una stringa e voglio che trovi l'id di ogni singola parola che la compone...

    ad esempio: "oggi ho mangiato pizza e pane" e mi restituisce l'id di pizza e di pane.

  4. #4
    Originariamente inviato da dilan86italy
    purtroppo no, io gli passo una stringa e voglio che trovi l'id di ogni singola parola che la compone...

    ad esempio: "oggi ho mangiato pizza e pane" e mi restituisce l'id di pizza e di pane.
    quindi vorresti che diventasse

    where campo in ('oggi', 'ho', 'mangiato', 'pizza', 'e', 'pane')

    ???

  5. #5
    esatto, ma scrivendo così:
    codice:
    SELECT id FROM `menu` WHERE nome IN (REPLACE("'pizza pane'"," ", "','"))
    nemmeno va

  6. #6
    non so come si faccia in mySql, ma io in m$sql splitto la frase e metto i singoli elementi in una tabella, poi vado di Join

  7. #7

  8. #8
    in mysql la funzione split non esiste ed è quello che sto cercando di ovviare, nei link che ho segnalato esistono 2 soluzioni, ma una mi sembra esagerata e una limitata. Pensavo di risolvere comodamente con un bel replace...

  9. #9
    quale sarebbe quella esagerata?

  10. #10
    Originariamente inviato da optime
    quale sarebbe quella esagerata?
    http://kedar.nitty-witty.com/blog/my...ring-into-rows

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.