2012-11-07 14 views
21

Ecco la mia domanda che si traduce in un errore di sintassi:LIKE con% sui nomi delle colonne

SELECT * 
FROM account_invoice,sale_order 
WHERE sale_order.name LIKE %account_invoice.origin% 

Il campo account_invoice.origin contiene il testo del sale_order.name, più altro testo così, quindi ho bisogno di abbinare la stringa sale_order.name in qualsiasi punto della stringa account_invoice.origin.

Sto utilizzando PostgreSQL 8.4.

+0

si presenta come una query openerp? Non dovrebbe essere "sale_order.name = account_invoice.origin" per evitare la corrispondenza di "SO123" con "SO1234" – TimoSolo

risposta

39

Prova questa

SELECT * 
FROM account_invoice,sale_order 
WHERE sale_order.name LIKE '%' || account_invoice.origin || '%' 

% bisogno apostrofo perché il modello è una stringa.

|| è l'operatore per concatenation.

+1

Grazie, la soluzione ha risolto il mio problema. Si scopre che ho anche avuto la mia clausola al contrario. Dovrebbe essere: WHERE account_invoice.origin LIKE '%' || sale_order.name || '%' – user1806801

Problemi correlati