Menu

String expression troubles

2008-07-01
2012-12-07
  • Nobody/Anonymous

    I am reading DDL and DML statements from a series of files, and attempting to parse them using JSQL Parser before executing them using standard JDBC. Most statements work fine, but the parser throws an error when parsing the following (valid) DML statement:

    INSERT INTO FOO (ID,NAME,VALUE)
      VALUES ('42','BAR','Need'||CHR(59)||'embedded'||CHR(59)||'semicolons'||CHR(59)||'here.');

    The error thrown is:

    <omitted>
    Caused by: net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 2, column 72.
      Encountered: "|" (124), after : ""
    net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1290)
      at net.sf.jsqlparser.parser.CCJSqlParser.jj_ntk(CCJSqlParser.java:4890)
      at net.sf.jsqlparser.parser.CCJSqlParser.Insert(CCJSqlParser.java:358)
      at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:111)
      at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
      ... 19 more

    I have tried to use the Oracle "CONCAT" instead of the "||" syntax with a very similar error result.

    Any assistance would be appreciated.

    - Sam

     
    • Nobody/Anonymous

      By the way, a different DML statement containing "||" works just fine for setting a character set:

      UPDATE FOO SET VALUE = '^([0-9a-zA-Z|\+\*\$@#%'||CHR(38)||'!-]){8,}$' WHERE ID = '42';

      - Sam

       

Log in to post a comment.