rownumの動き

Oracle の rownum の動きについて調べる。例えば、次のようなSQL文を実行すると、

select * from A where B order by C

rownum が振られるタイミングは以下みたいな感じ。

rownum = 1
for x in ( select * from A )
loop
if ( x を条件 B でチェック)
then
行を出力
rownum = rownum + 1
end if;
end loop;
C でソート

という感じで、

  • FROM/WHERE 句を処理
  • 行を吐き出しと ROWNUM 増やして割り当て
  • SELECT を適用
  • GROUP BY を適用
  • HAVING を適用
  • ORDER BY を適用

という感じの順に処理していく。そんなわけで、

select * from A where ROWNUM > 1

みたいなことやっても行は得られん(rownumが増えないから)。

という感じで、On ROWNUM and Limiting Resultsに書いてあった。一つ賢くなった

HTML 5 ― HTML 4 からの変更点

HTML 5 ― HTML 4 からの変更点 だそうな。ざっと見たけど、そういう変更が入るのね、という感じ。ひとつ気づいたのが「meta 要素の charset 属性による指定。要素は文書の先頭 512 バイト以内に記述する必要があります。」って書いてある。前にHTMLパースするときにcharsetのmetaタグは何バイトまで期待すればいいのだろうと考えたこともあったけど、512バイトと明記してくれると助かる(前バージョンとか、明記してなかったような気も)。まぁ、普通に考えれば、512バイトくらい読めば十分な気もするからこの値を使おうっと。