@@ -364,60 +364,55 @@ pub fn get_filter_string(where_clause: &Conditions) -> Result<String, String> {
364
364
. replace ( "'" , "\\ '" )
365
365
. replace ( '%' , "\\ %" )
366
366
. replace ( '_' , "\\ _" ) ;
367
- format ! ( "LIKE '%{escaped_value}%'" )
367
+ format ! ( "LIKE '%{escaped_value}%' ESCAPE ' \\ ' " )
368
368
}
369
369
WhereConfigOperator :: DoesNotContain => {
370
370
let escaped_value = value
371
371
. replace ( "'" , "\\ '" )
372
372
. replace ( '%' , "\\ %" )
373
373
. replace ( '_' , "\\ _" ) ;
374
- format ! ( "NOT LIKE '%{escaped_value}%'" )
374
+ format ! ( "NOT LIKE '%{escaped_value}%' ESCAPE ' \\ ' " )
375
375
}
376
376
WhereConfigOperator :: ILike => {
377
377
let escaped_value = value
378
378
. replace ( "'" , "\\ '" )
379
379
. replace ( '%' , "\\ %" )
380
380
. replace ( '_' , "\\ _" ) ;
381
- format ! ( "ILIKE '%{escaped_value}%'" )
381
+ format ! ( "ILIKE '%{escaped_value}%' ESCAPE ' \\ ' " )
382
382
}
383
383
WhereConfigOperator :: BeginsWith => {
384
384
let escaped_value = value
385
385
. replace ( "'" , "\\ '" )
386
386
. replace ( '%' , "\\ %" )
387
387
. replace ( '_' , "\\ _" ) ;
388
- format ! ( "LIKE '{escaped_value}%'" )
388
+ format ! ( "LIKE '{escaped_value}%' ESCAPE ' \\ ' " )
389
389
}
390
390
WhereConfigOperator :: DoesNotBeginWith => {
391
391
let escaped_value = value
392
392
. replace ( "'" , "\\ '" )
393
393
. replace ( '%' , "\\ %" )
394
394
. replace ( '_' , "\\ _" ) ;
395
- format ! ( "NOT LIKE '{escaped_value}%'" )
395
+ format ! ( "NOT LIKE '{escaped_value}%' ESCAPE ' \\ ' " )
396
396
}
397
397
WhereConfigOperator :: EndsWith => {
398
398
let escaped_value = value
399
399
. replace ( "'" , "\\ '" )
400
400
. replace ( '%' , "\\ %" )
401
401
. replace ( '_' , "\\ _" ) ;
402
- format ! ( "LIKE '%{escaped_value}'" )
402
+ format ! ( "LIKE '%{escaped_value}' ESCAPE ' \\ ' " )
403
403
}
404
404
WhereConfigOperator :: DoesNotEndWith => {
405
405
let escaped_value = value
406
406
. replace ( "'" , "\\ '" )
407
407
. replace ( '%' , "\\ %" )
408
408
. replace ( '_' , "\\ _" ) ;
409
- format ! ( "NOT LIKE '%{escaped_value}'" )
409
+ format ! ( "NOT LIKE '%{escaped_value}' ESCAPE ' \\ ' " )
410
410
}
411
411
_ => {
412
412
let value = match NumberOrString :: from_string ( value. to_owned ( ) ) {
413
413
NumberOrString :: Number ( val) => format ! ( "{val}" ) ,
414
414
NumberOrString :: String ( val) => {
415
- format ! (
416
- "'{}'" ,
417
- val. replace( "'" , "\\ '" )
418
- . replace( '%' , "\\ %" )
419
- . replace( '_' , "\\ _" )
420
- )
415
+ format ! ( "'{}'" , val)
421
416
}
422
417
} ;
423
418
format ! ( "{} {}" , condition. operator, value)
0 commit comments