/ / Was ist die einfachste Methode, um Ergebnisse aus einer SQL-Abfrage für einen Teil eines Zeichenfolgenfelds in Rails zu bestellen? - SQL, Ruby-on-Rails, Ruby, Postgresql, SQL-Order-By

Was ist der einfachste Weg, um Ergebnisse aus einer SQL-Abfrage eines Teils eines String-Felds in Rails zu bestellen? - SQL, Ruby-on-Schienen, Rubin, Postgresql, SQL-Reihenfolge

Betrachten Sie eine Tabelle mit einem Textfeld mit der folgenden Form:

"foo,bar"

EDITS: "bar" ist die erste Zeichenfolge nach dem Komma. Es gibt nur ein Komma.

Was ist der einfachste Weg zu bestellen bar? Es kann entweder SQL (PostgreSQL) oder Ruby sein.

Antworten:

3 für die Antwort № 1
MyTable.all.sort_by { |r| r.my_text.match(/,(.*)$/)[1] }

1 für die Antwort № 2

Sie können dies in der Datenbank folgendermaßen tun:

M.order("substring(c from ",.*$")")

woher M ist dein Model und c ist die fragliche Spalte. Das substring call belässt das Komma in der Teilzeichenfolge, aber das ändert nichts an der Sortierung und der Vergleich der Kommas während der Sortierung ist wahrscheinlich schneller als der Versuch, sie zu entfernen. Auch diese Form von PostgreSQLs substring sollte funktionieren in 8.2 daher sollte es mit einer gemeinsam genutzten Heroku-Datenbank funktionieren.