Перевод запросов рельсов для sqlite - PullRequest
0 голосов
/ 29 августа 2010

Как мне перевести эти запросы mysql для работы с sqlite3?:

self.find(:first, :conditions => ['concat(first_name, \' \', middle_names, \' \', last_name) = ?', name])

self.find(:all, :conditions => ['(concat(first_name, \' \', last_name) LIKE ?) OR (concat(first_name, \' \', middle_names, \' \', last_name) LIKE ?)', "%#{name}%", "%#{name}%"])

Ответы [ 2 ]

0 голосов
/ 29 августа 2010

Небольшой поиск в Google мог бы помочь: http://www.google.com/search?q=sqlite+concat

В SQLite оператор concat является ||. и для более удобного чтения строки с одинарными кавычками ' я бы заключил эти строки в двойные кавычки ", поэтому вам не нужно так много экранировать:

self.find(:first, :conditions => ["first_name || ' ' || middle_names || ' ' || last_name = ?", name])

self.find(:all, :conditions => ["(first_name || ' ' || last_name LIKE ?) OR (first_name, ' ', middle_names || ' ' || last_name LIKE ?)", "%#{name}%", "%#{name}%"])
0 голосов
/ 29 августа 2010

||является оператором конкатенации SQLiteТак что это, вероятно, сработает:

self.find(:first, :conditions => ['first_name || \' \' || middle_names || \' \' || last_name = ?', name])
self.find(:all, :conditions => ['(first_name || \' \' || last_name LIKE ?) OR (first_name || \' \' || middle_names || \' \' || last_name LIKE ?)', "%#{name}%", "%#{name}%"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...