2012-12-28 16 views
9

Mi scuso in anticipo per chiedere che cosa sono sicuro si rivelerà una domanda molto semplice.Utilizzo di REPLACE() in MySQL SELECT

Ho un database MySQL (5.5) che include, tra le altre cose, un campo per i numeri di telefono. Sto cercando di creare una dichiarazione che cercherà in quel campo, eliminando tutti gli spazi. Quindi la ricerca di '0208' restituirà '020 8', '02 08 ',' 0 208 ',' 0208 ', ecc.

E questo è in Delphi XE2, nel caso in cui ciò faccia la differenza.

'SELECT * FROM sales_ledger WHERE REPLACE(telephone, " ", "") LIKE "%' + SearchEdit.Text + '%"' 

... mi dà un errore ...

filtro non valido nella clausola WHERE

... e ...

'SELECT REPLACE(telephone, " ", "") FROM sales_ledger WHERE REPLACE(telephone, " ", "") LIKE "%' + SearchEdit.Text + '%"' 

.. .dimmi ...

Nome campo non valido. Errore SQL generale. Colonna non trovata

... e in realtà ho bisogno di tutti i campi restituiti comunque.

Posso chiedere assistenza per correggere la sintassi per favore. Se hai bisogno di maggiori informazioni, non esitare a chiedere. Grazie mille per il tuo tempo.

MODIFICA: Una informazione potenzialmente critica che ho perso. La tabella è in realtà un database Sage a cui sto accedendo tramite ODBC. Poiché nulla di ciò che provo sta funzionando, potrebbe essere il problema principale. Mi scuso per non averlo detto prima.

risposta

2

Prova questo ::

SELECT 
REPLACE(telephone,' ', '') as replacedColumn 
FROM sales_ledger 


WHERE REPLACE(telephone,' ', '') LIKE '%"+ SearchEdit.Text +"%'" 

O

Select temp1.* 
from 
(
SELECT 
REPLACE(telephone,' ', '') as replacedColumn 
FROM sales_ledger 
) as temp1 

WHERE temp1.replacedColumn LIKE '%"+SearchEdit.Text+"%'" 
+0

La prima istruzione restituisce un altro errore "Colonna non trovata" e il secondo mi restituisce un errore "Specifica tabella non valida". Ho aggiunto informazioni al post originale e mi scuso per non averlo menzionato la prima volta. Grazie per il tuo tempo! –

+0

Ho modificato, per favore prova ora .. :-) –

+0

Ora ottenere 'Tabella non esiste. Errore SQL generale. Tabella non trovata. ' Grazie ancora. –

6

la query Sembra funzionare benissimo vedere il demo

Prima prova esimo è query per voi DB client

SELECT * FROM sales_ledger 
WHERE REPLACE(telephone, " ", "") LIKE "%0208%" 

EDIT:

se interrogazione non funziona ancora. compagno passo dopo passo.

  • tenta di eseguire una semplice query di selezione (SELECT * FROM sales_ledger)
  • se il primo tentativo di esecuzione di query aggiungendo semplice in cui condizione. così passo dopo passo puoi rendere la tua query simile a quella originale e trovare da dove proviene l'errore vero e proprio.
+0

Ancora non funziona Champ ma ho modificato il post originale con ulteriori informazioni che potrebbero fare la differenza. Grazie per aver risposto! –

+0

'SELECT * FROM sales_ledger WHERE telefono LIKE"% '+ SearchEdit.Text +'% "' - funziona. 'SELECT * FROM sales_ledger WHERE REPLACE (telefono," "," ") LIKE"% "+ SearchEdit.Text + '%" '- non funziona. –

+0

dovrebbe funzionare. che lingua stai usando puoi darci il codice che stai usando per eseguire la query? – Champ