1

私はこのクエリを持っています:

@listings = Listing.where('city != ?', 'SommerVille')

これを引き起こしている可能性のある他に何か提案があるかどうか疑問に思っていましたか?

DB から市区町村 !=SommerVille のリストだけを取得したいと考えています。

ありがとう


編集 上記の問題は、都市名の先頭または末尾の空白が原因でした。したがって、大文字と小文字を無視し、先頭/末尾の空白も無視するDBをクエリする最良の方法は何だろうと思っていました。

次のアプローチは機能しましたが、より良い方法はありますか?

@unwanted_cities = Listing.where(['city != ?', "SommerVille"]).where(['city != ?', " SommerVille"]).where(['city != ?', "SommerVille "])
4

1 に答える 1

0

ほとんどのデータベースはトリムをサポートしていると思います

@listings = Listing.where('TRIM(city) != ?', 'SommerVille')

長期的には、データベースに入る途中で空白を取り除く方が良いでしょう

大文字と小文字を区別せずに大文字を使用する 1 つの方法

@listings = Listing.where('UPPER(TRIM(city)) != UPPER(?)', 'SommerVille')

または

@listings = Listing.where('UPPER(TRIM(city)) != ?', 'SommerVille'.upcase)
于 2012-07-01T23:59:25.207 に答える