當代碼會告訴勝於言:爲什麼ruby對字符串數組的排序與sql order(postgres)不同?
[4] pry> Models::Company.order(:name).select_map(:name)
=> ["Dekker, Jacobs and Bosch", "Koster en Zonen", "Peters-Koster", "Peters, Vries and Smits", "Wal, Linden and Jacobs"]
[5] pry> Models::Company.order(:name).select_map(:name).sort
=> ["Dekker, Jacobs and Bosch", "Koster en Zonen", "Peters, Vries and Smits", "Peters-Koster", "Wal, Linden and Jacobs"]
正因爲如此我的規格隨機失敗的。比較他們,這樣我纔可以恢復正常的數組:
result_names.map { |s| s.gsub(/,|-/, '') }
我試圖在JavaScript中相同的數組排序,並得到了相同的結果紅寶石給我。我現在想知道,是否有某種排序字符串的標準,還是實現的細節?
「Peters-Koster」ascii 45還是長破折號? – DavidC
與[編碼或整理](https://www.postgresql.org/docs/9.5/static/locale.html)配置您的Postgres服務器,可能是什麼? –
@DavidC不幸的是,環境發生了變化,我無法檢索到相同的結果來準確回答。但是我試圖在數據庫中插入與我在此處發佈的數據相同的數據,並且我已經獲得了相同的時間順序。所以我想這是因爲[unicode短劃線](https://en.wikipedia.org/wiki/Dash)?看來Ruby正常化了這樣的字符串。 –