function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Sudipta Patnaik 5Sudipta Patnaik 5 

How can I incorporate a string (highlighted in bold) in SOQL query after where clause???? .Below is the code and I'm getting errors

public class SearchLienController {
    
    
    @AuraEnabled 
    public static List<Lien__c> getLiens(String lienReservationNumber,String paymentConfirmationNumber,String lienClaimantName,String injuredWorkerName, String caseRefNumber) {
        
       
       String finalQry = finalQuery(lienReservationNumber, paymentConfirmationNumber, lienClaimantName, injuredWorkerName, caseRefNumber);
            
        return [SELECT Name,Case__r.CaseNumber,Lien_Claimant_Name__r.Name,Injured_Worker_Name__r.Name,Lien_Disposition__c,Form_Received_Date_Original_File_Date__c,Payment_Confirmation_Number__c,Total_Requested_Amount__c
                FROM Lien__c where =:finalQry];
    }
    
    private static String finalQuery(String lienReservationNumber,String paymentConfirmationNumber,String lienClaimantName,String injuredWorkerName, String caseRefNumber){
      
        String finalQry = '';
        String payCA = paymentConfirmationNumber;
        if(!String.isBlank(lienReservationNumber)){
            finalQry= ' Name=:lienReservationNumber';
        }
        
         if(!String.isBlank(payCA)){
               finalQry += ' AND Payment_Confirmation_Number__c=:payCA';  
          }
        
         if(!String.isBlank(lienClaimantName)){
               finalQry += ' AND Lien_Claimant_Name__r.id=:lienClaimantName';  
        }
        
         if(!String.isBlank(injuredWorkerName)){
               finalQry += ' AND Injured_Worker_Name__r.id=:injuredWorkerName';  
        }
        
         if(!String.isBlank(caseRefNumber)){
               finalQry += ' AND Case__r.CaseNumber=:caseRefNumber';  
        }

        if(finalQry.startsWith('AND')){
            finalQry = finalQry.replaceFirst('AND', '');
        } 
        
        return finalQry;

}
}
Sudipta Patnaik 5Sudipta Patnaik 5
Following is the error popping up:

Expression cannot be assigned
AbhimanyuAbhimanyu
Hi Sudipta,

update the return of getLiens method like this

return Database.query( 'SELECT Name,Case__r.CaseNumber,Lien_Claimant_Name__r.Name,Injured_Worker_Name__r.Name,Lien_Disposition__c,Form_Received_Date_Original_File_Date__c,Payment_Confirmation_Number__c,Total_Requested_Amount__c
                FROM Lien__c where = '+finalQry);

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dynamic_soql.htm

Mark it the best answer if it solved your query.
Sudipta Patnaik 5Sudipta Patnaik 5
Thanks Abhimanyu.It worked and I have one more quick question that how can I do partial search on the field ''lienReservationNumber'' in above example which is of data type auto number.I have tried using like operator in below cases and it didn't work.Could you please help me out on this.

 if(!String.isBlank(lienReservationNumber)){
            finalQry= ' Name like : %lienReservationNumber%';
        }



 if(!String.isBlank(lienReservationNumber)){
            finalQry= ' Name like : \'%'+lienReservationNumber+'%\' Limit 10'';
        }
AbhimanyuAbhimanyu
Hi Sudipta,

try this

 if(!String.isBlank(lienReservationNumber)){
     finalQry= ' Name like \'%'+lienReservationNumber+'%\' Limit 10';
}

% sign does not go well with :