Skip to content

Commit bb21b4a

Browse files
lafmistic100
authored andcommitted
Added support for NOT REGEXP operator
1 parent 8524ffd commit bb21b4a

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/lexer.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class Lexer
157157

158158
SQL_FUNCTIONS = ['AVG', 'COUNT', 'MIN', 'MAX', 'SUM']
159159
SQL_SORT_ORDERS = ['ASC', 'DESC']
160-
SQL_OPERATORS = ['=', '!=', '>=', '>', '<=', '<>', '<', 'LIKE', 'NOT LIKE', 'IS NOT', 'IS', 'REGEXP']
160+
SQL_OPERATORS = ['=', '!=', '>=', '>', '<=', '<>', '<', 'LIKE', 'NOT LIKE', 'IS NOT', 'IS', 'REGEXP', 'NOT REGEXP']
161161
SUB_SELECT_OP = ['IN', 'NOT IN', 'ANY', 'ALL', 'SOME']
162162
SUB_SELECT_UNARY_OP = ['EXISTS']
163163
SQL_CONDITIONALS = ['AND', 'OR']

test/grammar.spec.coffee

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@ describe "SQL Grammar", ->
127127
WHERE (((`a` > 10) AND (`b` REGEXP '.*')) AND (`c` = 4))
128128
"""
129129

130+
it "parses WHERE with NOT REGEXP clauses", ->
131+
parse("SELECT * FROM my_table WHERE a > 10 AND b NOT REGEXP '.*' AND c = 4").toString().should.eql """
132+
SELECT *
133+
FROM `my_table`
134+
WHERE (((`a` > 10) AND (`b` NOT REGEXP '.*')) AND (`c` = 4))
135+
"""
136+
130137
it "parses WHERE clauses with BETWEEN operator", ->
131138
parse("SELECT * FROM my_table WHERE a > 10 AND b BETWEEN 4 AND 6 AND c = 4").toString().should.eql """
132139
SELECT *

0 commit comments

Comments
 (0)