
SQLとSaleforceのSOQLは似てるけど書き方って違うの?
書き方のルールは色々違いがあります!

この記事を書いた人

- エンジニア歴5年目のフリーランスデータエンジニア
 - 高卒工場勤務からエンジニア転職
 - 3年目でフリーランスになり年収1000万↑達成
 - フルリモ歴2年、長野県に地方移住中
 
| おすすめの エージェント  | 特徴 | 詳しい解説は コチラ👇  | 
|---|---|---|
| geechs job | ・大手企業との取引が多い ・リモート案件80%以上  | /geechs_job | 
| Midworks | ・クラウド会計ソフトfreeeの利用が無料 ・マージンが比較的低い  | /midworks | 
| TECH STOCK | ・平均年収が935万円と高い ・フルリモート案件が72%以上  | /techstock | 
| PE-BANK | ・マージンが低く手取りが多い、福利厚生も充実 ・地方の案件も豊富に取り扱っている  | /pe-bank | 
| techadapt | ・エージェント全員がエンジニア経験者 ・確定申告時の税理士報酬負担制度あり  | /techadapt | 
今回は、データベースを扱うときに使う「SOQL」と「SQL」という2つの言語の違いについてお話しします。
名前が似てますが、実は書き方にはいくつか違いがあります。この記事では、なるべく簡単に、そしてわかりやすくこの2つの違いを解説します!
本記事で取り扱うデータベースについて

- Account(取引先):企業や組織の情報。
 - Contact(取引先責任者):Accountに関連する人物の情報。
 - Order__C(注文):取引先に関連する注文情報。
 
SQLとSOQLとは?
まず、SQL(エスキューエル)とSOQL(ソーキューエル)について簡単に説明します。
- SQL :データベースという大きなデータの集まりから情報を引き出したり、追加したりするためのエンジニアには必須な基本言語です。
 - SOQL :Salesforce(セールスフォース)で使われる特別なSQLのバージョンみたいなものです。
 
この2つは似ている部分もありますが、使うときのルールが少し違います。では、具体的にどこが違うのか、いくつか例を交えて見ていきましょう。
SQLとSOQLの書き方の違いについて
1. SELECT * は使えない
SQLでは、すべてのデータを取得するために SELECT * FROM と書きますが、SOQLでは SELECT * は使えません。代わりに、FIELDS() という特殊な記述を使います。
SQLの例
SELECT * FROM Account;SOQLの例
SELECT FIELDS(ALL) FROM Account;SOQLは他にも以下のような書き方もあります。
- FIELDS(CUSTOM) — オブジェクトのすべてのカスタム項目を選択します。
 - FIELDS(STANDARD) — オブジェクトのすべての標準項目を選択します。
 
2. DISTINCT と GROUP BY の違い
SQLで重複しないデータを取得する時、DISTINCT を使います。例えば、異なる業種の取引先を取得したい場合です。しかし、SOQLには DISTINCT がないので、GROUP BY を使って同じようなことを行います。
SQLの例
SELECT DISTINCT Industry FROM Account;SOQLの例
SELECT Industry FROM Account GROUP BY Industry;
3. NULL の扱い方の違い
SQLでは NULL は「何も値がない」という意味ですが、SOQLでは少し違います。SOQLでは、NULL が通常の値の一つとして扱われます。これは、データベースの動作の違いによるものです。
SQLの例
SELECT * FROM Account WHERE Phone IS NULL;SOQLの例
SELECT Id, Name FROM Account WHERE Phone = NULL;
5. NOT LIKE が使えない
SQLでは、文字列の部分一致検索で LIKE 演算子を使いますが、その反対として NOT LIKE を使うこともあります。しかし、SOQLでは直接 NOT LIKE は使えず、NOT(LIKE) という形で記述します。
SQLの例
SELECT * FROM Account WHERE Name NOT LIKE 'A%';
SOQLの例
SELECT Id, Name FROM Account WHERE NOT(Name LIKE 'A%');
6. コメントが書けない
SQLでは、コードの中にコメントを残すことができますが、SOQLではコメント機能がありません。これは、コードのメンテナンス性に影響するので注意が必要です。
SQLの例
-- これはコメントです
SELECT * FROM Account;SOQLの例
/* SOQLにはコメントがありません */
SELECT Id, Name FROM Account;
まとめ
SOQLとSQLは似ている部分もありますが、ここにあげたもの以外にも色々な違いがあります。Salesforceでデータを扱う場合は、SOQLのルールをしっかりと理解しておくことが重要です。
ここでは主に以下の違いについて解説しました。
- SELECT * が使えない:SOQLでは 
FIELDS(ALL)を使います。 - DISTINCT はない:代わりに 
GROUP BYを使用。 - NULL の扱いが違う:SQLでは 
IS NULL、SOQLでは= NULL。 - NOT LIKE が使えない:
NOT(LIKE)で表現。 - コメントがない:SOQLにはコメント機能がありません。
 
これらの違いを理解し、Salesforceで効率的にデータを操作できるように頑張りましょう!
| リモート案件を探せる エージェント  | 特徴 | 
|---|---|
| geechs job | 90%以上がリモート案件。高単価・優良案件が多い。 | 
| Midworks | フルリモート案件だけに絞って検索可能。福利厚生が手厚い。 | 
| TECH STOCK | 72%がリモート案件。平均年収935万。 | 
| PE-BANK | マージンが低く、福利厚生が手厚い。地方の案件も豊富。 | 
| techadapt | 条件を満たせば確定申告時の税理士費用を負担してもらえる。 | 
