数据库的编码表有以下几个字段,code,name,num 等,其中 code 的类型是 string,只有两种,一种是两位的如 01,02,03 等,一种是四位的,如 0000,0001,0003 等,我怎么用 ruby 的 where 语句或 find 语句查找出所有 code 的长度是 2 位的所有记录。高手请指教,谢谢
where('char_length(table_name.code) = 2')
https://dev.mysql.com/doc/refman/5.7/en/string-functions.html
我试了一下 Code.where(:code.length==2) 不行
#2 楼 @xiaoxiao 当然了,你看看终端输出的查询语句。1 楼的查询条件是直接作为查询语句传递到数据库的。
对,查询结果跟 Code.all 一样,难道就只能用 sql 语句查询了吗
where(code: ('00'..'99').collect{|a| a})
#4 楼 @xiaoxiao 这个需求就该是 sql 来搞定啊,或者你搞个字段存下这两种类型。
有道理