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)