diff --git a/src/lexer.coffee b/src/lexer.coffee index 09bc04a..d2f04c0 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -138,7 +138,7 @@ class Lexer SQL_FUNCTIONS = ['AVG', 'COUNT', 'MIN', 'MAX', 'SUM'] SQL_SORT_ORDERS = ['ASC', 'DESC'] - SQL_OPERATORS = ['=', '!=', '>=', '>', '<=', '<>', '<', 'LIKE', 'IS NOT', 'IS'] + SQL_OPERATORS = ['=', '!=', '>=', '>', '<=', '<>', '<', 'LIKE', 'NOT LIKE', 'IS NOT', 'IS'] SUB_SELECT_OP = ['IN', 'NOT IN', 'ANY', 'ALL', 'SOME'] SUB_SELECT_UNARY_OP = ['EXISTS'] SQL_CONDITIONALS = ['AND', 'OR'] diff --git a/test/grammar.spec.coffee b/test/grammar.spec.coffee index 19f8871..5ac8edb 100644 --- a/test/grammar.spec.coffee +++ b/test/grammar.spec.coffee @@ -114,6 +114,13 @@ describe "SQL Grammar", -> WHERE ((`a` > 10) AND ((`a` < 30) OR (`b` = 'c'))) """ + it "parses WHERE with LIKE and NOT LIKE clauses", -> + parse("SELECT * FROM my_table WHERE foo LIKE '%a' AND bar NOT LIKE 'b%'").toString().should.eql """ + SELECT * + FROM `my_table` + WHERE ((`foo` LIKE '%a') AND (`bar` NOT LIKE 'b%')) + """ + it "parses WHERE with ORDER BY clauses", -> parse("SELECT * FROM my_table WHERE x > 1 ORDER BY y").toString().should.eql """ SELECT *