Skip to content

Commit 29c95a3

Browse files
committed
fix: added ESCAPE keyword in sql
1 parent ec7722e commit 29c95a3

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

src/alerts/alerts_utils.rs

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -364,60 +364,55 @@ pub fn get_filter_string(where_clause: &Conditions) -> Result<String, String> {
364364
.replace("'", "\\'")
365365
.replace('%', "\\%")
366366
.replace('_', "\\_");
367-
format!("LIKE '%{escaped_value}%'")
367+
format!("LIKE '%{escaped_value}%' ESCAPE '\\'")
368368
}
369369
WhereConfigOperator::DoesNotContain => {
370370
let escaped_value = value
371371
.replace("'", "\\'")
372372
.replace('%', "\\%")
373373
.replace('_', "\\_");
374-
format!("NOT LIKE '%{escaped_value}%'")
374+
format!("NOT LIKE '%{escaped_value}%' ESCAPE '\\'")
375375
}
376376
WhereConfigOperator::ILike => {
377377
let escaped_value = value
378378
.replace("'", "\\'")
379379
.replace('%', "\\%")
380380
.replace('_', "\\_");
381-
format!("ILIKE '%{escaped_value}%'")
381+
format!("ILIKE '%{escaped_value}%' ESCAPE '\\'")
382382
}
383383
WhereConfigOperator::BeginsWith => {
384384
let escaped_value = value
385385
.replace("'", "\\'")
386386
.replace('%', "\\%")
387387
.replace('_', "\\_");
388-
format!("LIKE '{escaped_value}%'")
388+
format!("LIKE '{escaped_value}%' ESCAPE '\\'")
389389
}
390390
WhereConfigOperator::DoesNotBeginWith => {
391391
let escaped_value = value
392392
.replace("'", "\\'")
393393
.replace('%', "\\%")
394394
.replace('_', "\\_");
395-
format!("NOT LIKE '{escaped_value}%'")
395+
format!("NOT LIKE '{escaped_value}%' ESCAPE '\\'")
396396
}
397397
WhereConfigOperator::EndsWith => {
398398
let escaped_value = value
399399
.replace("'", "\\'")
400400
.replace('%', "\\%")
401401
.replace('_', "\\_");
402-
format!("LIKE '%{escaped_value}'")
402+
format!("LIKE '%{escaped_value}' ESCAPE '\\'")
403403
}
404404
WhereConfigOperator::DoesNotEndWith => {
405405
let escaped_value = value
406406
.replace("'", "\\'")
407407
.replace('%', "\\%")
408408
.replace('_', "\\_");
409-
format!("NOT LIKE '%{escaped_value}'")
409+
format!("NOT LIKE '%{escaped_value}' ESCAPE '\\'")
410410
}
411411
_ => {
412412
let value = match NumberOrString::from_string(value.to_owned()) {
413413
NumberOrString::Number(val) => format!("{val}"),
414414
NumberOrString::String(val) => {
415-
format!(
416-
"'{}'",
417-
val.replace("'", "\\'")
418-
.replace('%', "\\%")
419-
.replace('_', "\\_")
420-
)
415+
format!("'{}'", val)
421416
}
422417
};
423418
format!("{} {}", condition.operator, value)

0 commit comments

Comments
 (0)