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 № 1MyTable.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.