SQL如果字段长度小于10个符号搜索通过像没有%%

时间:2013-02-06 19:35:52

标签: mysql sql ruby-on-rails ruby

我该怎么办,如果我的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]) 

1 个答案:

答案 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将被应用。