2012-11-07 12 views
21

Oto moje zapytanie, które powoduje błąd składni:jak z% na nazwy kolumn

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

Pole account_invoice.origin zawiera tekst sale_order.name, plus inny tekst, tak więc muszę dopasuj łańcuch sale_order.name w dowolnym miejscu ciągu account_invoice.origin.

Używam PostgreSQL 8.4.

+0

wygląda jak zapytanie o openerp? Powinno to być "sale_order.name = account_invoice.origin", aby uniknąć dopasowania "SO123" z "SO1234" – TimoSolo

Odpowiedz

39

Spróbuj

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

% potrzebuje pojedynczy cudzysłów, ponieważ wzór jest ciągiem.

|| jest operatorem dla concatenation.

+1

Dzięki, twoje rozwiązanie rozwiązało mój problem. Okazuje się, że miałem również swoją klauzulę "tam". Powinno to być: WHERE account_invoice.origin LIKE '%' || sale_order.name || "%" – user1806801