- エスケープ文字を使用する方法:
Dynamic SOQLクエリ内のシングルクォートをエスケープするには、バックスラッシュ(\)を使用します。例えば、
\'
はシングルクォートをエスケープするための方法です。以下に例を示します。
String searchString = 'It\'s a dynamic SOQL query.';
String query = 'SELECT Id FROM Object__c WHERE Name = \'' + searchString + '\'';
List<Object__c> records = Database.query(query);
- String.escapeSingleQuotesメソッドを使用する方法:
ApexのStringクラスには、シングルクォートをエスケープするための
escapeSingleQuotes
メソッドが用意されています。このメソッドを使用すると、文字列内のすべてのシングルクォートがエスケープされます。以下に例を示します。
String searchString = 'It\'s a dynamic SOQL query.';
String escapedString = String.escapeSingleQuotes(searchString);
String query = 'SELECT Id FROM Object__c WHERE Name = \'' + escapedString + '\'';
List<Object__c> records = Database.query(query);
- パラメータ化クエリを使用する方法: Dynamic SOQLでは、バインド変数を使用してクエリを構築することもできます。バインド変数を使用すると、シングルクォートのエスケープを意識する必要がなくなります。以下に例を示します。
String searchString = 'It\'s a dynamic SOQL query.';
List<Object__c> records = Database.query(
'SELECT Id FROM Object__c WHERE Name = :searchString'
);
この方法では、バインド変数:searchString
に直接値をセットし、Apexランタイムが適切にエスケープしてくれます。
これらは、Dynamic SOQLでシングルクォートをエスケープするためのいくつかの一般的な方法です。適用する方法は、コードのコンテキストや要件によって異なる場合があります。