SOQL: Populate a Literal List in WHERE IN Clause
I need to query for an object based on 2 string variables. The first one is a constant but the second one gets passed to the class constructor.
So in the end I want to achieve something like this:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN :{STRING_ONE, stringTwo}
];
}
}
This is the part that I can't get the syntax right of WHERE Name IN :{STRING_ONE, stringTwo}
. I know I've seen this somewhere but can't find it on google.
soql list where
add a comment |
I need to query for an object based on 2 string variables. The first one is a constant but the second one gets passed to the class constructor.
So in the end I want to achieve something like this:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN :{STRING_ONE, stringTwo}
];
}
}
This is the part that I can't get the syntax right of WHERE Name IN :{STRING_ONE, stringTwo}
. I know I've seen this somewhere but can't find it on google.
soql list where
add a comment |
I need to query for an object based on 2 string variables. The first one is a constant but the second one gets passed to the class constructor.
So in the end I want to achieve something like this:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN :{STRING_ONE, stringTwo}
];
}
}
This is the part that I can't get the syntax right of WHERE Name IN :{STRING_ONE, stringTwo}
. I know I've seen this somewhere but can't find it on google.
soql list where
I need to query for an object based on 2 string variables. The first one is a constant but the second one gets passed to the class constructor.
So in the end I want to achieve something like this:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN :{STRING_ONE, stringTwo}
];
}
}
This is the part that I can't get the syntax right of WHERE Name IN :{STRING_ONE, stringTwo}
. I know I've seen this somewhere but can't find it on google.
soql list where
soql list where
asked 4 hours ago
ArthleteArthlete
976717
976717
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
It's like normal SOQL, but you put the colons before each item in the list:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN (:STRING_ONE, :stringTwo)
];
}
}
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
1
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
add a comment |
You can supply string variable values using Apex binding. When you're not using Dynamic SOQL, as you're not here, you can even use complex Apex expressions in the bind. The following options are all legit.
... WHERE Name IN (:STRING_ONE, :stringTwo)
... WHERE Name IN :new List<String>{STRING_ONE, stringTwo}
... WHERE Name = :STRING_ONE OR Name = :stringTwo
List<String> names = new List<String>{STRING_ONE, stringTwo};
[SELECT ... FROM Account WHERE Name IN :names]
Dynamic SOQL doesn't allow complex bind expressions, so creating new Lists and similar are verboten in that context.
add a comment |
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',
autoActivateHeartbeat: false,
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254106%2fsoql-populate-a-literal-list-in-where-in-clause%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
It's like normal SOQL, but you put the colons before each item in the list:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN (:STRING_ONE, :stringTwo)
];
}
}
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
1
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
add a comment |
It's like normal SOQL, but you put the colons before each item in the list:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN (:STRING_ONE, :stringTwo)
];
}
}
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
1
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
add a comment |
It's like normal SOQL, but you put the colons before each item in the list:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN (:STRING_ONE, :stringTwo)
];
}
}
It's like normal SOQL, but you put the colons before each item in the list:
public class MyClass {
private final String STRING_ONE = 'STRING ONE';
public MyClass(String stringTwo) {
List<Object__c> objects = [
SELECT Id
FROM Object__c
WHERE Name IN (:STRING_ONE, :stringTwo)
];
}
}
answered 4 hours ago
sfdcfoxsfdcfox
259k12204447
259k12204447
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
1
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
add a comment |
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
1
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
Thank you, that's what I was looking for!
– Arthlete
4 hours ago
1
1
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
@Arthlete You're welcome! I know it's pretty unusual syntax, so glad you asked so people could find the answer to this.
– sfdcfox
4 hours ago
add a comment |
You can supply string variable values using Apex binding. When you're not using Dynamic SOQL, as you're not here, you can even use complex Apex expressions in the bind. The following options are all legit.
... WHERE Name IN (:STRING_ONE, :stringTwo)
... WHERE Name IN :new List<String>{STRING_ONE, stringTwo}
... WHERE Name = :STRING_ONE OR Name = :stringTwo
List<String> names = new List<String>{STRING_ONE, stringTwo};
[SELECT ... FROM Account WHERE Name IN :names]
Dynamic SOQL doesn't allow complex bind expressions, so creating new Lists and similar are verboten in that context.
add a comment |
You can supply string variable values using Apex binding. When you're not using Dynamic SOQL, as you're not here, you can even use complex Apex expressions in the bind. The following options are all legit.
... WHERE Name IN (:STRING_ONE, :stringTwo)
... WHERE Name IN :new List<String>{STRING_ONE, stringTwo}
... WHERE Name = :STRING_ONE OR Name = :stringTwo
List<String> names = new List<String>{STRING_ONE, stringTwo};
[SELECT ... FROM Account WHERE Name IN :names]
Dynamic SOQL doesn't allow complex bind expressions, so creating new Lists and similar are verboten in that context.
add a comment |
You can supply string variable values using Apex binding. When you're not using Dynamic SOQL, as you're not here, you can even use complex Apex expressions in the bind. The following options are all legit.
... WHERE Name IN (:STRING_ONE, :stringTwo)
... WHERE Name IN :new List<String>{STRING_ONE, stringTwo}
... WHERE Name = :STRING_ONE OR Name = :stringTwo
List<String> names = new List<String>{STRING_ONE, stringTwo};
[SELECT ... FROM Account WHERE Name IN :names]
Dynamic SOQL doesn't allow complex bind expressions, so creating new Lists and similar are verboten in that context.
You can supply string variable values using Apex binding. When you're not using Dynamic SOQL, as you're not here, you can even use complex Apex expressions in the bind. The following options are all legit.
... WHERE Name IN (:STRING_ONE, :stringTwo)
... WHERE Name IN :new List<String>{STRING_ONE, stringTwo}
... WHERE Name = :STRING_ONE OR Name = :stringTwo
List<String> names = new List<String>{STRING_ONE, stringTwo};
[SELECT ... FROM Account WHERE Name IN :names]
Dynamic SOQL doesn't allow complex bind expressions, so creating new Lists and similar are verboten in that context.
answered 4 hours ago
David ReedDavid Reed
37.3k82255
37.3k82255
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254106%2fsoql-populate-a-literal-list-in-where-in-clause%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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