I'm currently migrating away form Xpath queries to JCR SQL2 ones.
The main problem I'm experiencing is that many of my properties contains the '.' char that is reserved and I couldn't find a proper way to escape it.
JCR offers a simple way to bind values, but I couldn't find any option for doing the same with properties.
The '.' character is not used in JCR names as a metacharacter, and therefore has no need to be escaped. JCR-SQL2 queries should allow such characters to be unescaped, though you can always try to surround the (qualified or expanded) property names with square brackets.
SELECT [acme:property.1], [acme:property.2] FROM [acme:myType] ...