概要
サクラエディタでたまに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>