SQL の TOP (上位何件を取得) には括弧が必要だった

SQL の TOP*1 ですが、今まで文法を誤解していました。実は、 expression に括弧が必要だったのですね。

SELECT TOP (10) * FROM CUSTOMER

今まで括弧をつけずに書いていたのですが、 TOP (Transact-SQL) によると過去との互換性で残されているそうです。

旧バージョンとの互換性のため、SELECT ステートメントで TOP を使用する場合は expression をかっこで囲まなくても処理が行われますが、これは推奨されません。

SqlParameter で TOP を使おうと思ったとき、括弧でくくらないとパラメータを受け付けてくれなかったので変だと思っていたのですが、やっとすっきりしました。

*1:SQL Server の TOP 句は、上位 n 件を取得するときなど便利に利用できるので、そこそこの使用頻度があります。