Per spec, based on the BNF, like_expression ::= string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
The string_expression must have a string value. --> "UPPER(x.value)" is legal The pattern_value is a string literal or a string-valued input parameter in which an underscore (_) stands for any single character, a percent (%) character stands for any sequence of characters (including the empty sequence), and all other characters stand for themselves. --> I don't think "UPPER('c%')" (i.e. functions_returning_strings) can be used in this context On Tue, Nov 19, 2013 at 9:31 PM, cjackson <jackson.christopher....@gmail.com > wrote: > Trying to execute the following query: > > SELECT x FROM religion x WHERE UPPER(x.value) LIKE UPPER('c%') ORDER BY > x.value ASC > > And get the following error: > > Caused by: <openjpa-2.2.2-SNAPSHOT-r422266:1462076 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: Encountered "UPPER ( x . > value ) LIKE UPPER" at character 32, but expected: ["(", ")", "+", "-", > ".", > ":", "<", "<=", "<>", "=", ">", ">=", "?", "ABS", "ALL", "AND", "ANY", > "AS", > "ASC", "AVG", "BETWEEN", "BOTH", "BY", "CASE", "COALESCE", "CONCAT", > "COUNT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DELETE", > "DESC", "DISTINCT", "ELSE", "EMPTY", "END", "ESCAPE", "EXISTS", "FETCH", > "FROM", "GROUP", "HAVING", "IN", "INDEX", "INNER", "IS", "JOIN", "KEY", > "LEADING", "LEFT", "LENGTH", "LIKE", "LOCATE", "LOWER", "MAX", "MEMBER", > "MIN", "MOD", "NEW", "NOT", "NULL", "NULLIF", "OBJECT", "OF", "OR", > "ORDER", > "OUTER", "SELECT", "SET", "SIZE", "SOME", "SQRT", "SUBSTRING", "SUM", > "THEN", "TRAILING", "TRIM", "TYPE", "UPDATE", "UPPER", "VALUE", "WHEN", > "WHERE", <BOOLEAN_LITERAL>, <DATE_LITERAL>, <DECIMAL_LITERAL>, > <IDENTIFIER>, > <INTEGER_LITERAL>, <STRING_LITERAL2>, <STRING_LITERAL>, > <TIMESTAMP_LITERAL>, > <TIME_LITERAL>]. > at > org.apache.openjpa.kernel.jpql.JPQL.generateParseException(JPQL.java:13162) > at > org.apache.openjpa.kernel.jpql.JPQL.jj_consume_token(JPQL.java:13036) > at > org.apache.openjpa.kernel.jpql.JPQL.conditional_primary(JPQL.java:1980) > at > org.apache.openjpa.kernel.jpql.JPQL.conditional_factor(JPQL.java:1958) > at > org.apache.openjpa.kernel.jpql.JPQL.conditional_term(JPQL.java:1807) > at > org.apache.openjpa.kernel.jpql.JPQL.conditional_expression(JPQL.java:1769) > at org.apache.openjpa.kernel.jpql.JPQL.where_clause(JPQL.java:1587) > at > org.apache.openjpa.kernel.jpql.JPQL.select_statement(JPQL.java:91) > at org.apache.openjpa.kernel.jpql.JPQL.parseQuery(JPQL.java:63) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.parse(JPQLExpressionBuilder.java:2401) > at > > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.<init>(JPQLExpressionBuilder.java:2388) > at > org.apache.openjpa.kernel.jpql.JPQLParser.parse(JPQLParser.java:49) > ... 85 more > > I believe this SQL query is acceptable, any ideas? > > > > -- > View this message in context: > http://openjpa.208410.n2.nabble.com/Parse-Exception-generated-when-using-keyword-UPPER-tp7585604.html > Sent from the OpenJPA Users mailing list archive at Nabble.com. > -- Albert Lee.