■
振り分け処理みたいな
1なら1を
2なら2を
3なら3を
4なら1を
5なら2を
6なら3を
7なら1を
・・・
CASE WHEN MOD(?, 3) = 0 THEN 3 ELSE MOD(?, 3) END
ってするのが一番明快かな?
個人的にCASE文そんなに好きじゃないので
MOD(? - 1, 3) + 1
ってしたんだけどもコレどっちが速いんだろう?
前者を使うメリット
・一般的に可読性が高い
後者を使うメリット
・各パラメータ(普通3もパラメータになるよね)の設定が各1回で済む
・僕はこっちの方が読みやすい
ちなみに0以下の数を考慮した場合。
※前者
0→3
- 1→-1
- 2→-2
- 3→3
- 4→-1
- 5→-2
- 6→3
- 7→-1
※後者
0→0
- 1→-1
- 2→1
- 3→0
- 4→-1
- 5→1
- 6→0
- 7→-1
どう見てもどちらもおかしい
来る値が保証されてる時しか使っちゃダメよ