We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents f548094 + f400589 commit c1f682dCopy full SHA for c1f682d
4 files changed
grammar/expressions.js
@@ -262,6 +262,8 @@ export default {
262
[$.is_not, 'binary_is'],
263
[$.keyword_like, 'pattern_matching'],
264
[$.not_like, 'pattern_matching'],
265
+ [$.keyword_rlike, 'pattern_matching'],
266
+ [$.not_rlike, 'pattern_matching'],
267
[$.similar_to, 'pattern_matching'],
268
[$.not_similar_to, 'pattern_matching'],
269
// binary_is precedence disambiguates `(is not distinct from)` from an
grammar/keywords.js
@@ -177,6 +177,7 @@ export default {
177
keyword_gin: _ => make_keyword("gin"),
178
keyword_brin: _ => make_keyword("brin"),
179
keyword_like: _ => choice(make_keyword("like"),make_keyword("ilike")),
180
+ keyword_rlike: _ => choice(make_keyword("rlike"),make_keyword("regexp")),
181
keyword_similar: _ => make_keyword("similar"),
182
keyword_unsigned: _ => make_keyword("unsigned"),
183
keyword_zerofill: _ => make_keyword("zerofill"),
@@ -325,6 +326,7 @@ export default {
325
326
// Operators
327
is_not: $ => prec.left(seq($.keyword_is, $.keyword_not)),
328
not_like: $ => seq($.keyword_not, $.keyword_like),
329
+ not_rlike: $ => seq($.keyword_not, $.keyword_rlike),
330
similar_to: $ => seq($.keyword_similar, $.keyword_to),
331
not_similar_to: $ => seq($.keyword_not, $.keyword_similar, $.keyword_to),
332
distinct_from: $ => seq($.keyword_is, $.keyword_distinct, $.keyword_from),
queries/highlights.scm
@@ -183,6 +183,7 @@
(keyword_transaction)
184
(keyword_only)
185
(keyword_like)
186
+ (keyword_rlike)
187
(keyword_similar)
188
(keyword_over)
189
(keyword_change)
test/corpus/expressions.txt
@@ -571,6 +571,66 @@ WHERE
571
(keyword_to))
572
right: (literal)))))))
573
574
+================================================================================
575
+Where with RLIKE pattern matching
576
577
+
578
+SELECT
579
+ *
580
+FROM
581
+ a
582
+WHERE
583
+ a RLIKE '^pattern'
584
+ AND a NOT RLIKE '^pattern'
585
+ AND a rlike '^pattern'
586
+ AND a REGEXP '^pattern';
587
588
589
+--------------------------------------------------------------------------------
590
591
+(program
592
+ (statement
593
+ (select
594
+ (keyword_select)
595
+ (select_expression
596
+ (term
597
+ value: (all_fields))))
598
+ (from
599
+ (keyword_from)
600
+ (relation
601
+ (object_reference
602
+ name: (identifier)))
603
+ (where
604
+ (keyword_where)
605
+ predicate: (binary_expression
606
+ left: (binary_expression
607
608
609
+ left: (field
610
+ name: (identifier))
611
+ operator: (keyword_rlike)
612
+ right: (literal))
613
+ operator: (keyword_and)
614
+ right: (binary_expression
615
616
617
+ operator: (not_rlike
618
+ (keyword_not)
619
+ (keyword_rlike))
620
+ right: (literal)))
621
622
623
624
625
626
627
628
629
630
631
632
+ right: (literal)))))))
633
634
================================================================================
635
NOT EQUAL <> OPERATOR
636
0 commit comments