2012-11-07 24 views
21

Đây là câu hỏi của tôi mà kết quả trong một lỗi cú pháp:NHƯ với% vào tên cột

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

Trường account_invoice.origin chứa văn bản của sale_order.name, cộng với văn bản khác là tốt, vì vậy tôi cần phải khớp với chuỗi sale_order.name ở bất kỳ đâu trong chuỗi account_invoice.origin.

Tôi đang sử dụng PostgreSQL 8.4.

+0

trông giống như truy vấn mở? Không nên là "sale_order.name = account_invoice.origin" để tránh khớp "SO123" với "SO1234" – TimoSolo

Trả lời

39

Hãy thử điều này

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

% cần báo giá duy nhất vì mô hình là một chuỗi.

|| là nhà điều hành cho concatenation.

+1

Cảm ơn, giải pháp của bạn đã giải quyết được sự cố của tôi. Nó chỉ ra rằng tôi cũng có mệnh đề where backwards. Nó phải là: WHERE account_invoice.origin LIKE '%' || sale_order.name || '%' – user1806801

Các vấn đề liên quan