Search code examples
sqlexcelvbasalesforcesoql

SQL LIKE '%...' in vba HTTP request


I am trying to run an SOQL query to the Salesforce REST API within a macro in Excel. I am using a LIKE statement to check if there are any email addresses with the same domain, which looks like this:

q=SELECT+email+FROM+Contact+WHERE+email+LIKE+'%@domain.com'

This is just the parameter given to the HTTP request, domain being a placeholder.

When I run the exact same request using Postman I get the correct response from the server, however in Excel I get Error 400 bad request.

When dropping the % it accepts the request, however then it obviously doesn't find any entries, as it is looking for the exact string "@domain.com".

Are there any known problems with the %-sign within vba? Or any other suggestions what could be the problem?


Solution

  • The problem is not with VBA, it is with your HTTP query. You need to escape the percent sign (%), which is a special characters. I guess Postman is doing this for you under the hood.

    Hence, try :

    q=SELECT+email+FROM+Contact+WHERE+email+LIKE+'%[email protected]'
    

    See : https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_the_percent_character

    If that's not enough for the query to succeed, you may as well escape the arobas sign (@):

    q=SELECT+email+FROM+Contact+WHERE+email+LIKE+'%25%40domain.com'