作 ▸
SQLiteでテーブルの内容を全部消して連番もリセットする
MySQLとかSQLServerでは、TRUNCATE
を使うとテーブルの内容を全消し&連番リセットできて便利だったのですが、SQLiteには TRUNCATE
が無かった。
MySQLとかSQLServerでは、TRUNCATE
を使うとテーブルの内容を全消し&連番リセットできて便利だったのですが、SQLiteには TRUNCATE
が無かった。
職場の画面が大きくないノート使ってると、スクロールしてもついてくるヘッダとか、画面が狭くなるので嫌いです。なので、個人的によく使ってるブックマークレットです。
// これを…
const before = [['A','B'], ['C','D','E'], ['F','G']];
// こう
const after = [
['A','C','F'],
['B','C','F'],
['A','D','F'],
['B','D','F'],
['A','E','F'],
['B','E','F'],
['A','C','G'],
['B','C','G'],
['A','D','G'],
['B','D','G'],
['A','E','G'],
['B','E','G'],
];
複合キーのマスタとかをメモリ上にキャッシュしたい時に
// これを…
$before = [
['key1' => 'A', 'key2' => 'X', 'key3' => '1', 'name' => '塩'],
['key1' => 'A', 'key2' => 'Y', 'key3' => '1', 'name' => '砂糖'],
['key1' => 'A', 'key2' => 'Y', 'key3' => '2', 'name' => 'しょうゆ'],
['key1' => 'B', 'key2' => 'X', 'key3' => '1', 'name' => 'バルサミコ酢'],
];
// こう
$after = [
'A' => [
'X' => [
'1' => ['key1' => 'A', 'key2' => 'X', 'key3' => '1', 'name' => '塩'],
],
'Y' => [
'1' => ['key1' => 'A', 'key2' => 'Y', 'key3' => '1', 'name' => '砂糖'],
'2' => ['key1' => 'A', 'key2' => 'Y', 'key3' => '2', 'name' => 'しょうゆ'],
],
],
'B' => [
'X' => [
'1' => ['key1' => 'B', 'key2' => 'X', 'key3' => '1', 'name' => 'バルサミコ酢'],
],
]
];
普通にUint○○Array (TypedArray) 同士をキャストすると、入りきらないデータは切り落とされます。
const uint16Array = Uint16Array.from([0xff01, 0xfe02, 0xfd03, 0xfc04]);
const uint8Array = new Uint8Array(uint16Array);
console.log(uint8Array);
// -> Uint8Array(4) [1, 2, 3, 4] = 0x01, 0x02, 0x03, 0x04
これを [255, 1, 254, 2, 253, 3, 252, 4]
= 0xff, 0x01, 0xfe, 0x02, 0xfd, 0x03, 0xfc, 0x04
に変換できないかと思って、やってみました。
デバッグ用。スペース区切りの16進表記にする。
ゲーム作ってたときに使ってたものです。計算方法は、全面的に次のサイト様を参考にさせていただきました。
localeCompare()
使えば半角と全角が混ざってても大丈夫だし、漢字とかも五十音順になる。