我问是因为彻底的谷歌搜索没有返回关于如何做到这一点的线索。
我正在尝试提取一个很少使用的列字段的示例,不幸的是,即使在空字段中也散布着换行符和破折号,所以我不能只要求那些有数据的字段。我需要一个至少有 10-15 个字符或类似内容的列。我还可以想象这个查询对于验证预先存在的数据很有用。我知道执行此操作的验证器,但我不是在尝试验证,而是在尝试搜索。谢谢!
我问是因为彻底的谷歌搜索没有返回关于如何做到这一点的线索。
我正在尝试提取一个很少使用的列字段的示例,不幸的是,即使在空字段中也散布着换行符和破折号,所以我不能只要求那些有数据的字段。我需要一个至少有 10-15 个字符或类似内容的列。我还可以想象这个查询对于验证预先存在的数据很有用。我知道执行此操作的验证器,但我不是在尝试验证,而是在尝试搜索。谢谢!
似乎 ActiveRecord 不支持这一点。但是你无论如何都可以这样做(Mysql示例)
Model.where("CHAR_LENGTH(text_field) = ?", 10)
在 Postgres 中同样应该工作,但在文档中它说使用 char_length()
您还可以做的是使用回调保存记录存储字段的大小
before_save {|r| r.text_field_size = r.text_field.size}
有了这个,你现在可以用它来查询,这将是 DB 不可知的。
Model.where(text_field_size: 10)
我认为您必须在 SQL 中编写请求的一部分。
对于 MySQL,使用类似:
Model.where("CHAR_LENGTH(field_name) >= ?", min_length)