I have a LWC component which takes 4 input from the user and fetches the matching records based on the conditions in the query. In the below apex method to fetch records, the parameter 'c' which is a string is to be treated as a wild search. This method and query works fine in the wild character search but just one scenario.
If the input in 'c' parameter, for example is '%%%%'(or any other alpha numeric combination consisting '%') then it returns all the records matching the criteria. What I want is the '%' which comes from input to be treated as a string and not another wild search character in the query.
@AuraEnabled(cacheable=true)
public static List<ABC> search(String a, String b, String c, String d){
String query1 = 'Select Id, Name from ABC where ';
if(string.isNotBlank(a))
query1 += ' QWE = \''+a+'\' ';
if(string.isNotBlank(b))
query1 += ' and RTY = \''+b+'\' ';
if(string.isNotBlank(c))
query1 += ' and Name like \''+c+'%\' '; //**********clause********
if(string.isNotBlank(d))
query1+= ' and XYZ = \''+d+'\' ';
query1+= ' ORDER BY Name ASC';
List<ABC> tagsList = Database.query(query1);
return tagsList;
}
Should this be handled in the LWC somehow or there's a way to handle in apex as well? Minimum of 4 characters will always be there in the string 'c' and removing '%' from the input doesn't sound like a good idea. Please suggest.