2012-11-07 41 views
21

這裏是我的查詢,結果在一個語法錯誤:LIKE用%列名

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

的account_invoice.origin字段包含sale_order.name的文本,再加上其他文字一樣,所以我需要在account_invoice.origin字符串中的任何位置匹配sale_order.name字符串。

我正在使用PostgreSQL 8.4。

+0

看起來像一個openerp查詢? 不應該是「sale_order.name = account_invoice.origin」,以避免匹配「SO123」與「SO1234」 – TimoSolo

回答

39

試試這個

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

%需要單引號,因爲該模式是一個字符串。

||concatenation的運營商。

+1

謝謝,您的解決方案解決了我的問題。事實證明,我也有我的where子句倒退。它應該是:WHERE account_invoice.origin LIKE'%'|| sale_order.name || '%' – user1806801