1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コーディングの際に同じ作業を繰り返すことはありませんか?
下記のような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を指定すること」を基として紹介します。

①入力値の準備

image.png
image.png

「ID_001」を入力後にオートフィル機能を用いて「ID_020」までをA列に作成します。

②CONCAT関数で記号を結合する

CONCAT関数 CONCAT(テキスト1, テキスト2, ...) を使って、値を整形します。

入力する数式:=CONCAT("'", A1, "'", ",")

image.png

ポイント
文字列としてシングルクォーテーションやカンマを扱うため、ダブルクォーテーション " で囲みます。
少しややこしいですが、" ' " + A1 + " ' " + " , " を合体させているイメージです。

シングルクォーテーションをa、カンマをbと置き換えると、
=CONCAT("a",A1,"a","b")となります。

画像の通りに、値をシングルクォーテーションで囲いカンマで区切った形となります。

③ オートフィル&コピペ
あとは数式を下にドラッグして適用し、結果をコピーしてSQLエディタに貼り付けるだけ!
※貼り付けた後、一番最後のデータの末尾にあるカンマ(,)だけ削除するのを忘れないようにしましょう。

image.png

先に、IN句の中身以外はコードを書いておきましょう。

image.png

B列をコピーして、IN句の括弧内に貼り付けます。

image.png

29行目のカンマは不要なので削除し、インデントも整えましょう。
image.png

はい!完成!!!とっても楽ではないですか!?

さらに時短!TEXTJOIN関数なら末尾のカンマ不要

最新のExcel(Office 2019以降やMicrosoft 365)を使っているなら、TEXTJOIN関数が最強です。

入力する数式:="'" & TEXTJOIN("','", TRUE, A1:A20) & "'"

これなら、データの間にだけ引用符とカンマを入れてくれるので、貼り付けた後の修正すら不要になります。

まとめ

2〜3個なら手入力が早いですが、20個、50個と増える場合はこのやり方が圧倒的に早くて正確です。

ちなみに、IN句に指定できる値はデータベース(Oracleなど)によっては1,000個までという制限があります。膨大なデータを扱う場合は、一時テーブルを作成して内部結合(INNER JOIN)するなどの方法も検討してみてくださいね。

Excelを賢く使って、定型作業をサクサク終わらせましょう!


オブジェクティブグループではXの投稿も平日毎日行っています!
IT 関連の小ネタや便利技から、日常のアニメ・ゲーム布教なども幅広く投稿してるので、
ご興味のある方は是非フォロー・いいねをお願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?