Skip to content

Encountered unexpected token: "member" #1631

Description

@lovlyhao

代码如下
`String sql= "SELECT \n" +
" id,cxr_employee_id,cxr_post_id,cxr_site_id,cxr_region_id,in_charge_start_time,in_charge_end_time,charge_status,create_by,create_time,update_by,update_time,revision,create_by_name,create_by_type,update_by_name,update_by_type,delete_by,delete_by_name,delete_by_type,delete_time,delete_status,sort_num,remark,sys_dept_id,spare_id \n" +
" FROM cxr_employee_post \n" +
" WHERE ( '106' member of (cxr_post_id->'$.value') )";

    Select stmt = (Select) CCJSqlParserUtil.parse(sql);`

报错如下:

Exception in thread "main" net.sf.jsqlparser.JSQLParserException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "member" <S_IDENTIFIER>
at line 4, column 18.

Was expecting one of:

"&"
")"
"::"
"<<"
">>"
"COLLATE"
"["
"^"
"|"

at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:263)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:81)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:47)
at com.example.demo3.controller.Main.main(Main.java:21)

Caused by: java.util.concurrent.ExecutionException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "member" <S_IDENTIFIER>
at line 4, column 18.

Was expecting one of:

"&"
")"
"::"
"<<"
">>"
"COLLATE"
"["
"^"
"|"

at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:258)
... 3 more

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "member" <S_IDENTIFIER>
at line 4, column 18.

Was expecting one of:

"&"
")"
"::"
"<<"
">>"
"COLLATE"
"["
"^"
"|"

at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:33398)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:33231)
at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:10313)
at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:10259)
at net.sf.jsqlparser.parser.CCJSqlParser.XorExpression(CCJSqlParser.java:10241)
at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:10212)
at net.sf.jsqlparser.parser.CCJSqlParser.WhereClause(CCJSqlParser.java:9494)
at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:6205)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:6406)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:6054)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:6049)
at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:248)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:157)
at net.sf.jsqlparser.parser.CCJSqlParserUtil$1.call(CCJSqlParserUtil.java:253)
at net.sf.jsqlparser.parser.CCJSqlParserUtil$1.call(CCJSqlParserUtil.java:250)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Activity

  1. manticore-projects commented on Sep 15, 2022

    @manticore-projects
    Contributor

    Greetings,

    MySQL MEMBER OF Operator is not supported yet.

    Syntax is: value MEMBER OF(json_array)

    Example:

    SELECT 17 MEMBER OF('[23, "abc", 17, "ab", 10]');

    OP's Sample is:

    SELECT 
     id,cxr_employee_id,cxr_post_id,cxr_site_id,cxr_region_id,in_charge_start_time,in_charge_end_time,charge_status,create_by,create_time,update_by,update_time,revision,create_by_name,create_by_type,update_by_name,update_by_type,delete_by,delete_by_name,delete_by_type,delete_time,delete_status,sort_num,remark,sys_dept_id,spare_id 
     FROM cxr_employee_post 
     WHERE ( '106' member of (cxr_post_id->'$.value') );
  2. lovlyhao commented on Sep 15, 2022

    @lovlyhao
    Author

    @manticore-projects cxr_post_id is
    {"name": "主管", "scope": "1", "value": "106"} But the query is wrong

  3. manticore-projects commented on Sep 15, 2022

    @manticore-projects
    Contributor

    @manticore-projects cxr_post_id is {"name": "主管", "scope": "1", "value": "106"} But the query is wrong

    Thank you for the clarification.
    As I have stated, the MySQL specific MEMBER OF operator is not supported by JSQLParser.

  4. lovlyhao commented on Sep 15, 2022

    @lovlyhao
    Author

    @manticore-projects thank you very much.

  5. RekaDowney commented on Oct 27, 2022

    @RekaDowney

    @manticore-projects As I have stated, the MySQL specific MEMBER OF operator is not supported by JSQLParser.

    Is there any plan to support MEMBER OF operator

  6. added a commit that references this issue on May 11, 2023
    6e7a78d
  7. added a commit that references this issue on Jun 15, 2023
    a815f5f
  8. added a commit that references this issue on Jun 27, 2023
    c79dfff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions