我有这个问题:
@listings = Listing.where('city != ?', 'SommerVille')
我想知道是否有人对可能导致此问题的原因有任何建议?
我想只从数据库中获取那些城市!= SommerVille。
由于
EDIT 上述问题是由于城市名称中的前导或尾随空格所致。 所以我想知道什么是查询数据库的最佳方法,它忽略了大小写并忽略了前导/尾随空格。
以下方法有效但有更好的方法吗?
@unwanted_cities = Listing.where(['city != ?', "SommerVille"]).where(['city != ?', " SommerVille"]).where(['city != ?', "SommerVille "])
答案 0 :(得分:0)
我认为大多数dbs支持修剪
@listings = Listing.where('TRIM(city) != ?', 'SommerVille')
从长远来看,在进入数据库的过程中去除空格会更好
忽略大小写的一种方法,使用upper
@listings = Listing.where('UPPER(TRIM(city)) != UPPER(?)', 'SommerVille')
或者
@listings = Listing.where('UPPER(TRIM(city)) != ?', 'SommerVille'.upcase)