Generic character/String JDBC Escape Syntax

Lance Andersen - Oracle Lance.Andersen at oracle.com
Wed Oct 30 10:44:24 PDT 2013


Oracle 12 is introducing  MATCH_RECOGNIZE:  http://docs.oracle.com/cd/E12839_01/doc.1111/e12048/pattern_recog.htm#autoId6


An example would be

---------


Example:

   SELECT
       T.firstW,
       T.lastZ
   FROM
       S2
   MATCH_RECOGNIZE (
       MEASURES
           A.c1 as firstW,
           last(Z) as lastZ
       PATTERN(A? W+ X+ Y+ Z+)
       DEFINE
           W as W.c2 < prev(W.c2),
           X as X.c2 > prev(X.c2),
           Y as Y.c2 < prev(Y.c2),
           Z as Z.c2 > prev(Z.c2)
   ) as T

The PATTERN clause in MATCH_RECOGNIZE has a PATTERN_QUANTIFIER that can be any of '*', '+', '?', '*?', '+?', or '??'. These are tokens, not literals or comments.
---------

The Oracle JDBC driver team has requested that we provide a standardized way to escape a character or character string allowing for example to escape a '?' for PreparedStatements in order to be able to support MATCH_RECOGNIZE.  After some discussion, it is felt that a generic way to escape would be best vs. something specific for MATCH_RECOGNIZE

Here was their proposal proposal:

--------------------
 {\...\}

expands to the characters between '{\' and '\}'. Doubled backslashes '\' expand to a single backslash.

 {\?\}  expands to ?
 {\{fn sysdate()}\} expands to {fn sysdate()} and is not further expanded
 {\}\} expands to }
 {\\\}\} expands to \}

------------------




Today,  we have {Escape} for the Like clause but this would be more general.

Currently Oracle is the only database that supports this, but I would expect others to follow suit if this becomes popular.  It would be good to have a vendor neutral way to specify the escape vs an Oracle JDBC driver specific way.

Input is welcome.

Best
Lance



Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering 
1 Network Drive 
Burlington, MA 01803
Lance.Andersen at oracle.com



More information about the jdbc-spec-discuss mailing list