2013-02-06 48 views
3

那樣搜索我該怎麼做,如果我的字段在db中少於10個符號,通過非強類似搜索,但是如果超過10個, %選項? 那麼如何檢查字段長度?SQL如果字段長度小於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]) 

回答

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()條件必須符合兩個()組中的一個,並且滿足哪個條件還需要應用與AND'd相符的LIKE條件。

+0

東西不好Mysql2 ::錯誤:您的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以在'%'A210466'%)OR(長度(cross_value)<12 AND cross_value,如'A210466'))'在第1行使用正確的語法:SELECT'cross_lists'。 * FROM'cross_lists' WHERE((length(cross_value)> = 12 AND cross_value like%'A210466'%)OR(length(cross_value)<12 AND cross_value like'A210466')) –

+0

@ValdisAzamaris添加'CONCAT()如上,抱歉。 –

+0

我只需要設置? in() –

相關問題