如何在Postgresql中连接两个字段

mik*_*101 3 postgresql activerecord ruby-on-rails ruby-on-rails-3

我有2个字段first_name和last_name但我需要将这些字段连接为全名.

我的代码如下

User.where('(users.first_name ILIKE ?) OR (users.last_name ILIKE ?)', "%#{search}%", "%#{search}%")
Run Code Online (Sandbox Code Playgroud)

但我需要类似的东西

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

fl0*_*00r 13

像SQLite中的Postgres中的连接: ||

(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}%")
Run Code Online (Sandbox Code Playgroud)

  • 你需要单引号而不是双引号. (5认同)

小智 5

将其更改为使用单引号,它将起作用:

(users.first_name || ' ' || users.last_name)
Run Code Online (Sandbox Code Playgroud)

代替:

(users.first_name || " " || users.last_name)
Run Code Online (Sandbox Code Playgroud)