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
MorookaMorooka 

SOQLの入力項目が空白、null時

お世話になります。

 

SOQLにて質問なのですが、

 

[select Name, Id
  from Opportunity

 where CALENDAR_QUARTER(ContractStart__c) = :serchQuarter 

     and CALENDAR_YEAR(ContractStart__c) = :year]

 

と記述した場合に「serchQuarter」が空白またはNULLの場合には、

「serchQuarter」の条件を処理しないようにするにはどのように記述をすればよろしいですか?

Best Answer chosen by Admin (Salesforce Developers) 
Taiki YoshikawaTaiki Yoshikawa

取引先を検索する場合だとこんな感じになります。

 

String serchQuarter = '取引先';
String query = '';
query += ' select ';
query += ' Id,Name ';
query += ' from ';
query += ' Account ';
if (String.isNotEmpty(serchQuarter)) {
    query += ' where ';
    query += ' Name =: serchQuarter ';
}

List<Account> accounts = Database.query(query);
System.debug(String.valueOf(accounts.size()));

 

All Answers

Taiki YoshikawaTaiki Yoshikawa

入力項目の値を判定してNULLや空白の場合はその条件を処理しないようにする場合は、

Dynamic SOQLを使うといいと思います。

 

Dynamic SOQL
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dynamic_soql.htm

Taiki YoshikawaTaiki Yoshikawa

取引先を検索する場合だとこんな感じになります。

 

String serchQuarter = '取引先';
String query = '';
query += ' select ';
query += ' Id,Name ';
query += ' from ';
query += ' Account ';
if (String.isNotEmpty(serchQuarter)) {
    query += ' where ';
    query += ' Name =: serchQuarter ';
}

List<Account> accounts = Database.query(query);
System.debug(String.valueOf(accounts.size()));

 

This was selected as the best answer
MorookaMorooka

Taikiさん

 

教えていただいた通り実行しましたら上手くできました。

 

ありがとうございます。