查找字段值全部为LOWERCASE的记录

dj.*_*dj. 3 sql postgresql activerecord ruby-on-rails ruby-on-rails-3

在Rails 3.2应用程序中,我有一个Tag模型,并希望查找name:string字段中的值全部为小写的所有记录.

因此,activerecord查询(在Postgres上)将返回Tag(id: 1, name: 'test')但不返回Tag(id:2, name: 'Test').

我确信有一种简单的方法可以做到这一点但我无法生成有效的查询!

Mis*_*cha 8

这应该工作:

Tag.where('name = lower(name)')
Run Code Online (Sandbox Code Playgroud)

如果name等于lower(name)它意味着它name是小写的.


Bra*_*rth 4

您可以使用正则表达式来搜索所有小写字母,例如:

Tag.where('name ~ :regex', regex: '^[a-z]+$')
Run Code Online (Sandbox Code Playgroud)