LIKE在SQL中工作不正确?

时间:2011-05-09 13:43:24

标签: java sql java-ee ejb

在我的ejb-jar.xml

       <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”时,它返回了一个空集合,任何人都可以告诉我我错在哪里?
谢谢

3 个答案:

答案 0 :(得分:3)

通常您必须在类似字符串中指定通配符,例如“Acti%”或“%cti%”

答案 1 :(得分:1)

如何在参数中添加%:

CONCAT(?1, '%')

答案 2 :(得分:0)

让您的参数为字符串,然后将'%' or '_'附加为前缀或后缀。 '_'表示单个字符变体,'%'表示多个字符变体。

但最酷的方法是让用户[在搜索功能中]输入%或_ in然后将其传递给查询。这提供了巨大的优势和灵活性。