Colega, fiz a seguinte consulta em meu sistema e funcionou:
em.createQuery(“SELECT c.nome, SUBSTRING(c.nome,0,10) FROM Cliente c”).getResultList().size()
Vamos às hipóteses:
1 - Acredito que você esteja usando a versão do toplink free com suporte a JPA 1.0 apenas, uma vez que o toplink foi doado para o Eclipse Project e mudou de nome para EclipseLink;
2 - Esta versão antiga do toplink talvez não tenha implementado a função SUBSTRING, isto é algo que você precisa investigar.
Se for possível, para efeito de teste, use o EclipseLink mais atual e verifique se o problema persiste. Fico impossibilitado de realizar este teste para você, pois utilizamos o hibernate 3.5.
Tenho interesse em ajudar na resolução do seu problema.
Abraço