APEXクラスで特定のIdからレコードを取得するSOQLを扱うときに発生したちょっとしたエラーです。
Account result = [SELECT id FROM Account WHERE id = 001AAAAAAAAA];
みたいな記述をしてエラーを発生させました。これは、id部分を’で囲うことで解決します。
Account result = [SELECT id FROM Account WHERE id = '001AAAAAAAAA'];
ちなみに、動的SOQL(Database.query()を使うやつ)では、SOQL文をString型で扱うことになりますので、’の扱いが面倒くさくなります。具体的には、Apexでは文字列を’で囲うため、そのまま’を使おうとすると文字列の終端を示す’と認識されてしまいます。なのでエスケープシーケンスを使用して’を文字として認識させます。参考(SOQL および SOSL リファレンス 引用符で囲まれた文字列のエスケープシーケンス)
String query = 'SELECT id FROM Account WHERE id = \'001AAAAAAAAA\'';
超初歩的な話ですが、この問題に結構時間を取られましたので、参考までに。

コメント