公開日:4/1/2023  更新日:4/2/2023

  • twitter
  • facebook
  • line

サクラエディタにSQL作成補助の便利マクロ登録

はじめに

本記事のために、以下のようなサンプルデータを用意しました。
Postgresを使ってますが、DBはなんでも良いです。
テストデータ
複数レコードの情報を抽出したりするのに、wherer 句の中で in 句を使用することがあると思います。

select id, name, age
from test.users
where name in ('tanaka','yabe','motoki','matsui','sato','takeda','otani','iwakuma','fukaya')
;

その際に、値をシングルクオーテーションで囲みカンマで区切ったリストが必要になります。
抽出対象が増えるとリストを作るだけでも非常に面倒くさいです!

なので、私は以下の入力に対してマクロを実行すると一発でリストを作成してくれるマクロを用意しました。

入力値

tanaka
yabe
motoki
matsui
sato
takeda
otani
iwakuma
fukaya

出力値

('tanaka','yabe','motoki','matsui','sato','takeda','otani','iwakuma','fukaya')

使い方

1.対象を選択した状態でメニューの登録済みマクロ(B) からsqlListCreaterを実行

※ ソースコードは後述で共有
実行前

2.実行が成功すると、お目当てのリストが出力される

実行後

ソースコード

以下のソースをコピーして利用下さい。ファイル名は、sqlListCreater.vbs で保存してローカルの適当な場所に配置して下さい。
sqlListCreater.vbs

Option Explicit
'----------------------------------------------------------
'定数
'----------------------------------------------------------
Dim startStr
startStr = "('"

Dim jointStr
jointStr = "','"

Dim endStr
endStr = "')"


'----------------------------------------------------------
'実行
'----------------------------------------------------------
Main

'----------------------------------------------------------
'主処理
'----------------------------------------------------------
Private Sub Main()

    '選択範囲文字列
    Dim selectedStr
    selectedStr = Editor.GetSelectedString(0)

    'パラメータを1行ごとに処理
    Dim parameterLines
    parameterLines = Split(selectedStr,vbCrLf)

    Dim resultStr
    resultStr = ""

    Dim i
    For i = 0 To Ubound(ParameterLines)

        '各パラメータ行
        Dim parameterLine
        parameterLine = Trim(Replace(parameterLines(i),vbTab," "))

        'パラメータが空行で無ければ処理
        If parameterLine <> "" then
            if i = 0 then
                resultStr = parameterLine
            Else 
                '文字列を結合
            resultStr = resultStr & jointStr & parameterLine
            End if
        End if
    Next

    '文字列を連結
    resultStr = startStr & resultStr & endStr

    'エディタへ書き込み
    Editor.InsText resultStr

    'エディタの1行目に移動
    Editor.Jump 1

End Sub

サクラエディタにマクロを設定

先ほどローカルに配置したスクリプトを簡単に呼び出せるようにサクラエディタにマクロを設定します。
設定(O) > 共通設定(C) > マクロ と進み マクロ一覧からローカルを参照して下さい。
名前(N)= sqlListCreater
File = sqlListCreater.vbs
を入力して 右に存在する 設定(A)を押下するとマクロに登録されます。

設定方法

おわり

非常に簡単にマクロを作って設定することが出来ました。
アイデアさえあれば、いろいろ作業効率化可能なマクロが作れそうですね。

戻る