3

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

1 回答 1

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

于 2013-02-06T19:59:43.530 回答