我该怎么办,如果我的db中的字段小于10个符号,则通过非强类似搜索,但如果超过10,则使用%%选项? 那么如何检查字段长度?
我在ruby中的代码是这样的:
@search = CrossList.find(:all, :conditions => ['cross_value like ? ', oem_condition])
但是怎么做:
@search = CrossList.find(:all, :conditions => ['length(cross_value) < 10 and cross_value like ? ', oem_condition])
否则
@search = CrossList.find(:all, :conditions => ['length(cross_value) >= 10 and cross_value like %?% ', oem_condition])
答案 0 :(得分:2)
使用两个条件,并将OR
组合在一起:
@search = CrossList.find(:all, :conditions => [
"(length(cross_value) >= 10 AND cross_value like CONCAT('%',?,'%')) OR (length(cross_value) < 10 AND cross_value like ?) ",
oem_condition,
oem_condition
])
两个LENGTH()
组中的一个必须满足()
条件,并且无论哪个符合条件,还需要LIKE
条件AND
d将被应用。