概要
サクラエディタでたまにSQLの整形をする必要がある瞬間があるので置いておきます。
拡張子は「.mac」にして読み込ませます。
マクロファイルの中身
//キーボードマクロのファイル
S_ReplaceAll(',', ',\\r\\n', 28); // すべて置換
S_ReplaceAll('WHERE', '\r\nWHERE', 28); // すべて置換
S_ReplaceAll('AND', '\r\n AND', 28); // すべて置換
S_ReplaceAll('FROM', '\r\nFROM', 28); // すべて置換
S_ReplaceAll('SELECT', '\r\nSELECT', 28); // すべて置換
S_ReplaceAll('UNION', '\r\nUNION', 28); // すべて置換
S_ReplaceAll('ORDER', '\r\nORDER', 28); // すべて置換
S_ReplaceAll(' LEFT ', '\r\n LEFT ', 28); // すべて置換
S_ReplaceAll(' INNER ', '\r\n INNER ', 28); // すべて置換
S_ReplaceAll(' ON ', '\r\n ON ', 28); // すべて置換
S_ReplaceAll(' OR ', '\r\n OR ', 28); // すべて置換
S_ReplaceAll('] params:', '\r\n\r\n\r\n', 28); // すべて置換
S_ReplaceAll('?', '■', 1); // すべて置換
S_ReDraw(0); // 再描画
謎html
上記で変換したSQLのプレースホルダに、配列に入れた値を入れたいとき用のhtmlです。
PREタグにSQLを入れると■の部分を配列の値と置き換えるだけのhtmlです
<button onclick = "copy()">
コピーする
</button>
<PRE id="sql">
--ここにSQLを書く
SELECT *
FROM TABLE_NAME
WHERE ID = ■
AND MEMO = ■
</PRE>
<script>
var element = document.getElementById("sql").innerHTML ;
var index = 0;
var sql = "";
//SQL置換対象
var rep =
['1',
'めも']
;
element = element.replace( 'sql:[', '' );
for(var i = 0; i < element.length; i++) {
var text = element[i];
if(text == "■"){
text = "'" + rep[index] + "'";
index++;
}
sql = sql + text;
}
document.getElementById("sql").innerHTML = sql
function copy() {
var text = document.getElementById("sql").innerHTML;
var area = document.createElement("textarea");
area.textContent = text;
document.body.appendChild(area);
area.select();
document.execCommand("copy");
document.body.removeChild(area);
}
</script>
