2011-05-09 56 views
0

在我的ejb-jar.xml中SQL中的LIKE工作不正確?

 <query> 
      <query-method> 
       <method-name>findByCaName</method-name> 
       <method-params> 
        <method-param>java.lang.String</method-param> 
       </method-params> 
      </query-method> 
      <ejb-ql>SELECT OBJECT(c) FROM Categories AS c WHERE c.caName LIKE ?1</ejb-ql> 
     </query> 

當我搜索,爲例子,「行動」,結果是正確的,但是當我試圖尋找「ACTI」,它返回一個空的集合,任何人可以告訴我哪裏錯了?
謝謝

+0

您需要'LIKE「Acti%」'來搜索以「Acti」開頭的文本。 – 2011-05-09 13:53:41

回答

3

通常你必須指定你喜歡的字符串通配符,如 「ACTI%」 或 「%CTI%」

+0

但因爲我使用參數,因此我不知道如何做這樣的 – Xitrum 2011-05-09 13:52:51

+0

您是否嘗試將'%'添加到您的參數? – 2011-05-09 13:53:52

+0

是的,但它會導致「部署失敗」,當我嘗試部署我的應用程序,它不接受'%' – Xitrum 2011-05-09 13:55:15

1

如何追加%到您的參數:

CONCAT(?1, '%') 
+0

調用它,但它沒有運行:( – Xitrum 2011-05-09 14:19:34

0

讓您的參數爲一個字符串,然後附加'%' or '_'作爲前綴或後綴。 '_'表示單個字符變體,'%'表示多個字符變體。

但最酷的方法是讓用戶[在搜索功能]輸入%或_ in,然後將其傳遞給查詢。這給了巨大的優勢和靈活性。