コーディングの際に同じ作業を繰り返すことはありませんか?
下記のようなSQLを書くとします。
SELECT
user_id,
user_name,
email,
created_at
FROM
users
WHERE
user_id IN (
'ID_001',
'ID_002',
'ID_003',
'ID_004',
'ID_005',
'ID_006',
'ID_007',
'ID_008',
'ID_009',
'ID_010',
'ID_011',
'ID_012',
'ID_013',
'ID_014',
'ID_015',
'ID_016',
'ID_017',
'ID_018',
'ID_019',
'ID_020'
);
WHERE句以降のIN句に入っているuser_idはすべてシングルクォーテーションで囲い、カンマ区切りにする必要がありますね。
仕様書で「user_idはID_001~ID_020を指定すること」と簡易に書かれていたとしても、コーディングの際は上記の形式にする必要があります。
1個ずつシングルクォーテーションで囲って、カンマを打って…という作業…
とてもめんどくさいですよね?
なんとこのめんどくさい作業がExcelを使うことで、効率化ができます。
プロジェクトによっては、コーディングエディタの拡張機能が使えなかったりもありますがExcelが使えないというプロジェクトはないと思いますので、是非覚えてサクサク作業をしましょう!!
CONCAT関数を活用しよう!
冒頭に書いた「user_idはID_001~ID_020を指定すること」を基として紹介します。
①入力値の準備
「ID_001」を入力後にオートフィル機能を用いて「ID_020」までをA列に作成します。
②CONCAT関数で記号を結合する
CONCAT関数 CONCAT(テキスト1, テキスト2, ...) を使って、値を整形します。
入力する数式:=CONCAT("'", A1, "'", ",")
ポイント
文字列としてシングルクォーテーションやカンマを扱うため、ダブルクォーテーション " で囲みます。
少しややこしいですが、" ' " + A1 + " ' " + " , " を合体させているイメージです。
シングルクォーテーションをa、カンマをbと置き換えると、
=CONCAT("a",A1,"a","b")となります。
画像の通りに、値をシングルクォーテーションで囲いカンマで区切った形となります。
③ オートフィル&コピペ
あとは数式を下にドラッグして適用し、結果をコピーしてSQLエディタに貼り付けるだけ!
※貼り付けた後、一番最後のデータの末尾にあるカンマ(,)だけ削除するのを忘れないようにしましょう。
先に、IN句の中身以外はコードを書いておきましょう。
B列をコピーして、IN句の括弧内に貼り付けます。
29行目のカンマは不要なので削除し、インデントも整えましょう。

はい!完成!!!とっても楽ではないですか!?
さらに時短!TEXTJOIN関数なら末尾のカンマ不要
最新のExcel(Office 2019以降やMicrosoft 365)を使っているなら、TEXTJOIN関数が最強です。
入力する数式:="'" & TEXTJOIN("','", TRUE, A1:A20) & "'"
これなら、データの間にだけ引用符とカンマを入れてくれるので、貼り付けた後の修正すら不要になります。
まとめ
2〜3個なら手入力が早いですが、20個、50個と増える場合はこのやり方が圧倒的に早くて正確です。
ちなみに、IN句に指定できる値はデータベース(Oracleなど)によっては1,000個までという制限があります。膨大なデータを扱う場合は、一時テーブルを作成して内部結合(INNER JOIN)するなどの方法も検討してみてくださいね。
Excelを賢く使って、定型作業をサクサク終わらせましょう!
オブジェクティブグループではXの投稿も平日毎日行っています!
IT 関連の小ネタや便利技から、日常のアニメ・ゲーム布教なども幅広く投稿してるので、
ご興味のある方は是非フォロー・いいねをお願いします。





