2011-04-17 64 views
3

我有2個字段first_name和last_name,但我需要將這些字段連接爲全名。如何連接Postgresql中的兩個字段

我的代碼如下

User.where('(users.first_name ILIKE ?) OR (users.last_name ILIKE ?)', "%#{search}%", "%#{search}%") 

,但我需要這樣的東西在Postgres的

User.where('(users.fullname ILIKE ?) OR (users.first_name ILIKE ?) OR (users.last_name ILIKE ?)', "%#{search}%", "%#{search}%", "%#{search}%") 

回答

13

級聯像SQLite的:||

(users.first_name || ' ' || users.last_name) 

User.where('((users.first_name || ' ' || users.last_name) ILIKE ?) OR (users.first_name ILIKE ?) OR (users.last_name ILIKE ?)', "%#{search}%", "%#{search}%", "%#{search}%") 
+1

這不是在PostgreSQL中 – mike101 2011-04-17 19:54:01

+0

工作,我沒有得到我的筆記本電腦的Postgres測試它,但我敢肯定我是對的。結帳這:http://stackoverflow.com/questions/43870/how-to-concatenate-strings-of-a-string-field-in-a-postgresql-group-by-query – fl00r 2011-04-17 19:55:42

+0

和有一個錯字:我正在使用'LIKE'而不是'ILIKE' – fl00r 2011-04-17 19:56:26

3

將其更改爲使用單引號和它將工作:

(users.first_name || ' ' || users.last_name) 

相反的:

(users.first_name || " " || users.last_name)