SOQL Like Query?











up vote
2
down vote

favorite












I am trying to make a query that will search for accounts with a name similar or exactly matching a field value.



So for example I have "Sales-Force" in the field. There is an account called "Salesforce" or "Sales Force"



My current query



Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%'


This isn't returning my accounts named "Sales Force" or "Salesforce" in my query editor.



UPDATED * My Apex code



string accountName= record.Name;
if(accountName.contains('-'))
{
accountName = accountName.replace('-', '%');
}
if(accountName.contains(' '))
{
accountName = accountName.replace(' ', '%');
}
accountName= '%' + accountName+ '%';

List<Account> accountLookup = new List<Account>();
accountLookup = [Select Id, Name FROM Account WHERE Name LIKE :accountName];









share|improve this question




























    up vote
    2
    down vote

    favorite












    I am trying to make a query that will search for accounts with a name similar or exactly matching a field value.



    So for example I have "Sales-Force" in the field. There is an account called "Salesforce" or "Sales Force"



    My current query



    Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%'


    This isn't returning my accounts named "Sales Force" or "Salesforce" in my query editor.



    UPDATED * My Apex code



    string accountName= record.Name;
    if(accountName.contains('-'))
    {
    accountName = accountName.replace('-', '%');
    }
    if(accountName.contains(' '))
    {
    accountName = accountName.replace(' ', '%');
    }
    accountName= '%' + accountName+ '%';

    List<Account> accountLookup = new List<Account>();
    accountLookup = [Select Id, Name FROM Account WHERE Name LIKE :accountName];









    share|improve this question


























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      I am trying to make a query that will search for accounts with a name similar or exactly matching a field value.



      So for example I have "Sales-Force" in the field. There is an account called "Salesforce" or "Sales Force"



      My current query



      Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%'


      This isn't returning my accounts named "Sales Force" or "Salesforce" in my query editor.



      UPDATED * My Apex code



      string accountName= record.Name;
      if(accountName.contains('-'))
      {
      accountName = accountName.replace('-', '%');
      }
      if(accountName.contains(' '))
      {
      accountName = accountName.replace(' ', '%');
      }
      accountName= '%' + accountName+ '%';

      List<Account> accountLookup = new List<Account>();
      accountLookup = [Select Id, Name FROM Account WHERE Name LIKE :accountName];









      share|improve this question















      I am trying to make a query that will search for accounts with a name similar or exactly matching a field value.



      So for example I have "Sales-Force" in the field. There is an account called "Salesforce" or "Sales Force"



      My current query



      Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%'


      This isn't returning my accounts named "Sales Force" or "Salesforce" in my query editor.



      UPDATED * My Apex code



      string accountName= record.Name;
      if(accountName.contains('-'))
      {
      accountName = accountName.replace('-', '%');
      }
      if(accountName.contains(' '))
      {
      accountName = accountName.replace(' ', '%');
      }
      accountName= '%' + accountName+ '%';

      List<Account> accountLookup = new List<Account>();
      accountLookup = [Select Id, Name FROM Account WHERE Name LIKE :accountName];






      apex soql query sosl






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 9 at 11:06

























      asked Nov 9 at 9:17









      Alexander Atkinsoon

      476




      476






















          3 Answers
          3






          active

          oldest

          votes

















          up vote
          4
          down vote



          accepted










          Have you considered:



          Select Id, Name FROM Account WHERE Name LIKE '%Sales%Force%'


          or:



          String likeValue = '%Sales%Force%';

          Account accounts = [Select Id, Name FROM Account WHERE Name LIKE :likeValue];


          PS



          Just noticed Oleksandr had posted this and deleted it: please clarify your question.



          PPS



          You could add some code that tries to generalize the pattern e.g. replaces non-alphabetic characters with a % and puts a % between each character. Or you could consider e.g. a Metaphone approach to the matching.






          share|improve this answer























          • I added the apex code im using to my op
            – Alexander Atkinsoon
            Nov 9 at 9:54










          • Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
            – Alexander Atkinsoon
            Nov 9 at 10:57










          • @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
            – Keith C
            Nov 9 at 11:02










          • Thanks so much!
            – Alexander Atkinsoon
            Nov 9 at 11:06


















          up vote
          4
          down vote













          You can't do it. It is not possible to use value of a field in condition expression, as a value.



          According to documentation




          fieldExpression uses the following syntax:



          fieldName comparisonOperator value







          A value used to compare with the value in fieldName. You must supply a
          value whose data type matches the field type of the specified field.
          You must supply a native value—other field names or calculations are
          not permitted
          . If quotes are required (for example, they are not for
          dates and numbers), use single quotes. Double quotes result in an
          error.




          update



          looks like it is XY problem, and I am sure desired result could be achieved by means of formula fields and other tools. Maybe you can post source of this question?






          share|improve this answer























          • My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
            – Alexander Atkinsoon
            Nov 9 at 9:58










          • I guess in short my question comes down to, is it possible to make queries typo-proof?
            – Alexander Atkinsoon
            Nov 9 at 10:14










          • now this question is fully understandable and as for me @KeithC gave a nice answer
            – Oleksandr Berehovskiy
            Nov 9 at 10:16


















          up vote
          3
          down vote













          First off, here's the LIKE docs




          LIKE Like Expression is true if the value in the specified fieldName
          matches the characters of the text string in the specified value. The
          LIKE operator in SOQL and SOSL is similar to the LIKE operator in SQL;
          it provides a mechanism for matching partial text strings and includes
          support for wildcards.



          The % and _ wildcards are supported for the LIKE operator.
          The % wildcard matches zero or more characters.
          The _ wildcard matches exactly one character.
          The text string in the specified value must be enclosed in single quotes.
          The LIKE operator is supported for string fields only.
          The LIKE operator performs a case-insensitive match, unlike the case-sensitive matching in SQL.
          The LIKE operator in SOQL and SOSL supports escaping of special characters % or _.
          Don’t use the backslash character in a search except to escape a special character.


          For example, the following query matches Appleton, Apple, and Appl,
          but not Bap




          So for your query Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%', what you're asking for is all accounts with a name that contains 'Salesforce-Force', so that wouldn't match either accounts.



          So to capture all of your examples you'd need this query
          SELECT Id, Name FROM Account WHERE Name LIKE 'Sales_Force' OR Name LIKE 'SalesForce' which would match 'Sales-Force', 'Sales Force', 'SalesForce', or 'sAlEsFoRcE' (like is case-insensitive)






          share|improve this answer





















          • What if the name is a variable and not hardcoded?
            – Alexander Atkinsoon
            Nov 9 at 9:32










          • works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
            – Ralph Callaway
            Nov 9 at 9:39










          • not the array only works with bind variables
            – Ralph Callaway
            Nov 9 at 9:39










          • and of course there is dynamic soql that let's you do it all dynamically
            – Ralph Callaway
            Nov 9 at 9:40











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "459"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f238840%2fsoql-like-query%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          3 Answers
          3






          active

          oldest

          votes








          3 Answers
          3






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          4
          down vote



          accepted










          Have you considered:



          Select Id, Name FROM Account WHERE Name LIKE '%Sales%Force%'


          or:



          String likeValue = '%Sales%Force%';

          Account accounts = [Select Id, Name FROM Account WHERE Name LIKE :likeValue];


          PS



          Just noticed Oleksandr had posted this and deleted it: please clarify your question.



          PPS



          You could add some code that tries to generalize the pattern e.g. replaces non-alphabetic characters with a % and puts a % between each character. Or you could consider e.g. a Metaphone approach to the matching.






          share|improve this answer























          • I added the apex code im using to my op
            – Alexander Atkinsoon
            Nov 9 at 9:54










          • Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
            – Alexander Atkinsoon
            Nov 9 at 10:57










          • @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
            – Keith C
            Nov 9 at 11:02










          • Thanks so much!
            – Alexander Atkinsoon
            Nov 9 at 11:06















          up vote
          4
          down vote



          accepted










          Have you considered:



          Select Id, Name FROM Account WHERE Name LIKE '%Sales%Force%'


          or:



          String likeValue = '%Sales%Force%';

          Account accounts = [Select Id, Name FROM Account WHERE Name LIKE :likeValue];


          PS



          Just noticed Oleksandr had posted this and deleted it: please clarify your question.



          PPS



          You could add some code that tries to generalize the pattern e.g. replaces non-alphabetic characters with a % and puts a % between each character. Or you could consider e.g. a Metaphone approach to the matching.






          share|improve this answer























          • I added the apex code im using to my op
            – Alexander Atkinsoon
            Nov 9 at 9:54










          • Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
            – Alexander Atkinsoon
            Nov 9 at 10:57










          • @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
            – Keith C
            Nov 9 at 11:02










          • Thanks so much!
            – Alexander Atkinsoon
            Nov 9 at 11:06













          up vote
          4
          down vote



          accepted







          up vote
          4
          down vote



          accepted






          Have you considered:



          Select Id, Name FROM Account WHERE Name LIKE '%Sales%Force%'


          or:



          String likeValue = '%Sales%Force%';

          Account accounts = [Select Id, Name FROM Account WHERE Name LIKE :likeValue];


          PS



          Just noticed Oleksandr had posted this and deleted it: please clarify your question.



          PPS



          You could add some code that tries to generalize the pattern e.g. replaces non-alphabetic characters with a % and puts a % between each character. Or you could consider e.g. a Metaphone approach to the matching.






          share|improve this answer














          Have you considered:



          Select Id, Name FROM Account WHERE Name LIKE '%Sales%Force%'


          or:



          String likeValue = '%Sales%Force%';

          Account accounts = [Select Id, Name FROM Account WHERE Name LIKE :likeValue];


          PS



          Just noticed Oleksandr had posted this and deleted it: please clarify your question.



          PPS



          You could add some code that tries to generalize the pattern e.g. replaces non-alphabetic characters with a % and puts a % between each character. Or you could consider e.g. a Metaphone approach to the matching.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 9 at 10:12

























          answered Nov 9 at 9:41









          Keith C

          93.7k1088199




          93.7k1088199












          • I added the apex code im using to my op
            – Alexander Atkinsoon
            Nov 9 at 9:54










          • Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
            – Alexander Atkinsoon
            Nov 9 at 10:57










          • @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
            – Keith C
            Nov 9 at 11:02










          • Thanks so much!
            – Alexander Atkinsoon
            Nov 9 at 11:06


















          • I added the apex code im using to my op
            – Alexander Atkinsoon
            Nov 9 at 9:54










          • Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
            – Alexander Atkinsoon
            Nov 9 at 10:57










          • @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
            – Keith C
            Nov 9 at 11:02










          • Thanks so much!
            – Alexander Atkinsoon
            Nov 9 at 11:06
















          I added the apex code im using to my op
          – Alexander Atkinsoon
          Nov 9 at 9:54




          I added the apex code im using to my op
          – Alexander Atkinsoon
          Nov 9 at 9:54












          Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
          – Alexander Atkinsoon
          Nov 9 at 10:57




          Hello, i've added some logic to my apex code. I have it check if contains and replace with %. It work for spaces, but no hyphens however... I added it to my OP
          – Alexander Atkinsoon
          Nov 9 at 10:57












          @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
          – Keith C
          Nov 9 at 11:02




          @AlexanderAtkinsoon The method returns a new string with the replaced characters (it does not modify the string) so you need something more like accountName = '%' + accountName.replace('-', '%').replace(' ', '%') + '%';.
          – Keith C
          Nov 9 at 11:02












          Thanks so much!
          – Alexander Atkinsoon
          Nov 9 at 11:06




          Thanks so much!
          – Alexander Atkinsoon
          Nov 9 at 11:06












          up vote
          4
          down vote













          You can't do it. It is not possible to use value of a field in condition expression, as a value.



          According to documentation




          fieldExpression uses the following syntax:



          fieldName comparisonOperator value







          A value used to compare with the value in fieldName. You must supply a
          value whose data type matches the field type of the specified field.
          You must supply a native value—other field names or calculations are
          not permitted
          . If quotes are required (for example, they are not for
          dates and numbers), use single quotes. Double quotes result in an
          error.




          update



          looks like it is XY problem, and I am sure desired result could be achieved by means of formula fields and other tools. Maybe you can post source of this question?






          share|improve this answer























          • My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
            – Alexander Atkinsoon
            Nov 9 at 9:58










          • I guess in short my question comes down to, is it possible to make queries typo-proof?
            – Alexander Atkinsoon
            Nov 9 at 10:14










          • now this question is fully understandable and as for me @KeithC gave a nice answer
            – Oleksandr Berehovskiy
            Nov 9 at 10:16















          up vote
          4
          down vote













          You can't do it. It is not possible to use value of a field in condition expression, as a value.



          According to documentation




          fieldExpression uses the following syntax:



          fieldName comparisonOperator value







          A value used to compare with the value in fieldName. You must supply a
          value whose data type matches the field type of the specified field.
          You must supply a native value—other field names or calculations are
          not permitted
          . If quotes are required (for example, they are not for
          dates and numbers), use single quotes. Double quotes result in an
          error.




          update



          looks like it is XY problem, and I am sure desired result could be achieved by means of formula fields and other tools. Maybe you can post source of this question?






          share|improve this answer























          • My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
            – Alexander Atkinsoon
            Nov 9 at 9:58










          • I guess in short my question comes down to, is it possible to make queries typo-proof?
            – Alexander Atkinsoon
            Nov 9 at 10:14










          • now this question is fully understandable and as for me @KeithC gave a nice answer
            – Oleksandr Berehovskiy
            Nov 9 at 10:16













          up vote
          4
          down vote










          up vote
          4
          down vote









          You can't do it. It is not possible to use value of a field in condition expression, as a value.



          According to documentation




          fieldExpression uses the following syntax:



          fieldName comparisonOperator value







          A value used to compare with the value in fieldName. You must supply a
          value whose data type matches the field type of the specified field.
          You must supply a native value—other field names or calculations are
          not permitted
          . If quotes are required (for example, they are not for
          dates and numbers), use single quotes. Double quotes result in an
          error.




          update



          looks like it is XY problem, and I am sure desired result could be achieved by means of formula fields and other tools. Maybe you can post source of this question?






          share|improve this answer














          You can't do it. It is not possible to use value of a field in condition expression, as a value.



          According to documentation




          fieldExpression uses the following syntax:



          fieldName comparisonOperator value







          A value used to compare with the value in fieldName. You must supply a
          value whose data type matches the field type of the specified field.
          You must supply a native value—other field names or calculations are
          not permitted
          . If quotes are required (for example, they are not for
          dates and numbers), use single quotes. Double quotes result in an
          error.




          update



          looks like it is XY problem, and I am sure desired result could be achieved by means of formula fields and other tools. Maybe you can post source of this question?







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 9 at 9:50

























          answered Nov 9 at 9:37









          Oleksandr Berehovskiy

          9,19132038




          9,19132038












          • My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
            – Alexander Atkinsoon
            Nov 9 at 9:58










          • I guess in short my question comes down to, is it possible to make queries typo-proof?
            – Alexander Atkinsoon
            Nov 9 at 10:14










          • now this question is fully understandable and as for me @KeithC gave a nice answer
            – Oleksandr Berehovskiy
            Nov 9 at 10:16


















          • My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
            – Alexander Atkinsoon
            Nov 9 at 9:58










          • I guess in short my question comes down to, is it possible to make queries typo-proof?
            – Alexander Atkinsoon
            Nov 9 at 10:14










          • now this question is fully understandable and as for me @KeithC gave a nice answer
            – Oleksandr Berehovskiy
            Nov 9 at 10:16
















          My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
          – Alexander Atkinsoon
          Nov 9 at 9:58




          My question comes from a trigger i've created that checks a text field and searches a record based on its value. A lookup field is filled with the ID of the record found. I've been asked to make sure it checks for variations. Incase someone puts a hyphen in the name instead of a space for example it will still find the record.
          – Alexander Atkinsoon
          Nov 9 at 9:58












          I guess in short my question comes down to, is it possible to make queries typo-proof?
          – Alexander Atkinsoon
          Nov 9 at 10:14




          I guess in short my question comes down to, is it possible to make queries typo-proof?
          – Alexander Atkinsoon
          Nov 9 at 10:14












          now this question is fully understandable and as for me @KeithC gave a nice answer
          – Oleksandr Berehovskiy
          Nov 9 at 10:16




          now this question is fully understandable and as for me @KeithC gave a nice answer
          – Oleksandr Berehovskiy
          Nov 9 at 10:16










          up vote
          3
          down vote













          First off, here's the LIKE docs




          LIKE Like Expression is true if the value in the specified fieldName
          matches the characters of the text string in the specified value. The
          LIKE operator in SOQL and SOSL is similar to the LIKE operator in SQL;
          it provides a mechanism for matching partial text strings and includes
          support for wildcards.



          The % and _ wildcards are supported for the LIKE operator.
          The % wildcard matches zero or more characters.
          The _ wildcard matches exactly one character.
          The text string in the specified value must be enclosed in single quotes.
          The LIKE operator is supported for string fields only.
          The LIKE operator performs a case-insensitive match, unlike the case-sensitive matching in SQL.
          The LIKE operator in SOQL and SOSL supports escaping of special characters % or _.
          Don’t use the backslash character in a search except to escape a special character.


          For example, the following query matches Appleton, Apple, and Appl,
          but not Bap




          So for your query Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%', what you're asking for is all accounts with a name that contains 'Salesforce-Force', so that wouldn't match either accounts.



          So to capture all of your examples you'd need this query
          SELECT Id, Name FROM Account WHERE Name LIKE 'Sales_Force' OR Name LIKE 'SalesForce' which would match 'Sales-Force', 'Sales Force', 'SalesForce', or 'sAlEsFoRcE' (like is case-insensitive)






          share|improve this answer





















          • What if the name is a variable and not hardcoded?
            – Alexander Atkinsoon
            Nov 9 at 9:32










          • works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
            – Ralph Callaway
            Nov 9 at 9:39










          • not the array only works with bind variables
            – Ralph Callaway
            Nov 9 at 9:39










          • and of course there is dynamic soql that let's you do it all dynamically
            – Ralph Callaway
            Nov 9 at 9:40















          up vote
          3
          down vote













          First off, here's the LIKE docs




          LIKE Like Expression is true if the value in the specified fieldName
          matches the characters of the text string in the specified value. The
          LIKE operator in SOQL and SOSL is similar to the LIKE operator in SQL;
          it provides a mechanism for matching partial text strings and includes
          support for wildcards.



          The % and _ wildcards are supported for the LIKE operator.
          The % wildcard matches zero or more characters.
          The _ wildcard matches exactly one character.
          The text string in the specified value must be enclosed in single quotes.
          The LIKE operator is supported for string fields only.
          The LIKE operator performs a case-insensitive match, unlike the case-sensitive matching in SQL.
          The LIKE operator in SOQL and SOSL supports escaping of special characters % or _.
          Don’t use the backslash character in a search except to escape a special character.


          For example, the following query matches Appleton, Apple, and Appl,
          but not Bap




          So for your query Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%', what you're asking for is all accounts with a name that contains 'Salesforce-Force', so that wouldn't match either accounts.



          So to capture all of your examples you'd need this query
          SELECT Id, Name FROM Account WHERE Name LIKE 'Sales_Force' OR Name LIKE 'SalesForce' which would match 'Sales-Force', 'Sales Force', 'SalesForce', or 'sAlEsFoRcE' (like is case-insensitive)






          share|improve this answer





















          • What if the name is a variable and not hardcoded?
            – Alexander Atkinsoon
            Nov 9 at 9:32










          • works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
            – Ralph Callaway
            Nov 9 at 9:39










          • not the array only works with bind variables
            – Ralph Callaway
            Nov 9 at 9:39










          • and of course there is dynamic soql that let's you do it all dynamically
            – Ralph Callaway
            Nov 9 at 9:40













          up vote
          3
          down vote










          up vote
          3
          down vote









          First off, here's the LIKE docs




          LIKE Like Expression is true if the value in the specified fieldName
          matches the characters of the text string in the specified value. The
          LIKE operator in SOQL and SOSL is similar to the LIKE operator in SQL;
          it provides a mechanism for matching partial text strings and includes
          support for wildcards.



          The % and _ wildcards are supported for the LIKE operator.
          The % wildcard matches zero or more characters.
          The _ wildcard matches exactly one character.
          The text string in the specified value must be enclosed in single quotes.
          The LIKE operator is supported for string fields only.
          The LIKE operator performs a case-insensitive match, unlike the case-sensitive matching in SQL.
          The LIKE operator in SOQL and SOSL supports escaping of special characters % or _.
          Don’t use the backslash character in a search except to escape a special character.


          For example, the following query matches Appleton, Apple, and Appl,
          but not Bap




          So for your query Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%', what you're asking for is all accounts with a name that contains 'Salesforce-Force', so that wouldn't match either accounts.



          So to capture all of your examples you'd need this query
          SELECT Id, Name FROM Account WHERE Name LIKE 'Sales_Force' OR Name LIKE 'SalesForce' which would match 'Sales-Force', 'Sales Force', 'SalesForce', or 'sAlEsFoRcE' (like is case-insensitive)






          share|improve this answer












          First off, here's the LIKE docs




          LIKE Like Expression is true if the value in the specified fieldName
          matches the characters of the text string in the specified value. The
          LIKE operator in SOQL and SOSL is similar to the LIKE operator in SQL;
          it provides a mechanism for matching partial text strings and includes
          support for wildcards.



          The % and _ wildcards are supported for the LIKE operator.
          The % wildcard matches zero or more characters.
          The _ wildcard matches exactly one character.
          The text string in the specified value must be enclosed in single quotes.
          The LIKE operator is supported for string fields only.
          The LIKE operator performs a case-insensitive match, unlike the case-sensitive matching in SQL.
          The LIKE operator in SOQL and SOSL supports escaping of special characters % or _.
          Don’t use the backslash character in a search except to escape a special character.


          For example, the following query matches Appleton, Apple, and Appl,
          but not Bap




          So for your query Select Id, Name FROM Account WHERE Name LIKE '%Sales-Force%', what you're asking for is all accounts with a name that contains 'Salesforce-Force', so that wouldn't match either accounts.



          So to capture all of your examples you'd need this query
          SELECT Id, Name FROM Account WHERE Name LIKE 'Sales_Force' OR Name LIKE 'SalesForce' which would match 'Sales-Force', 'Sales Force', 'SalesForce', or 'sAlEsFoRcE' (like is case-insensitive)







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 9 at 9:28









          Ralph Callaway

          16.5k1272152




          16.5k1272152












          • What if the name is a variable and not hardcoded?
            – Alexander Atkinsoon
            Nov 9 at 9:32










          • works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
            – Ralph Callaway
            Nov 9 at 9:39










          • not the array only works with bind variables
            – Ralph Callaway
            Nov 9 at 9:39










          • and of course there is dynamic soql that let's you do it all dynamically
            – Ralph Callaway
            Nov 9 at 9:40


















          • What if the name is a variable and not hardcoded?
            – Alexander Atkinsoon
            Nov 9 at 9:32










          • works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
            – Ralph Callaway
            Nov 9 at 9:39










          • not the array only works with bind variables
            – Ralph Callaway
            Nov 9 at 9:39










          • and of course there is dynamic soql that let's you do it all dynamically
            – Ralph Callaway
            Nov 9 at 9:40
















          What if the name is a variable and not hardcoded?
          – Alexander Atkinsoon
          Nov 9 at 9:32




          What if the name is a variable and not hardcoded?
          – Alexander Atkinsoon
          Nov 9 at 9:32












          works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
          – Ralph Callaway
          Nov 9 at 9:39




          works just fine, you can actually pass in a array of stuff ie. LIKE :values where values is array with ('val1%', '%val1','other%vals')
          – Ralph Callaway
          Nov 9 at 9:39












          not the array only works with bind variables
          – Ralph Callaway
          Nov 9 at 9:39




          not the array only works with bind variables
          – Ralph Callaway
          Nov 9 at 9:39












          and of course there is dynamic soql that let's you do it all dynamically
          – Ralph Callaway
          Nov 9 at 9:40




          and of course there is dynamic soql that let's you do it all dynamically
          – Ralph Callaway
          Nov 9 at 9:40


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Salesforce Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f238840%2fsoql-like-query%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Academy of Television Arts & Sciences

          L'Équipe

          1995 France bombings