@@ -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