Pages

2010-01-08

SQL-LIMIT分頁查詢語法轉換

以前使用SQL Server,要實現分頁語法很麻煩,總不如MySQL中的LIMIT語法來得直覺:
SELECT * FROM Table1 LIMIT 10, 20     // index, count, 取出第11-30筆資料

微軟到了SQL Server 2005之後,有了ROW_NUMBER()來實現分頁,但SQL語法只是更加複雜
很奇怪微軟為何不支援LIMIT語法(可google,但找不到中肯的答案),
為了維持資料庫MySQL切換SQL Server的分頁語法一致性,
只好自己來寫SQL分頁LIMIT語法的字串轉換函式:
SNAGHTMLa26b713

此轉換函式範例:
string sql;
string sql2 = “SELECT * FROM Table1 ORDER BY Date1 LIMIT 10, 20”;
cmd.CommandText = SqlLimitConvert(sql);

// SQLServer分頁函式需要OrderBy欄位,原文若無則要自訂加入,否則會產生例外。
sql = “SELECT * FROM Table1 LIMIT 10, 20”;
cmd.CommandText = SqlLimitConvert(sql, “Date1 ASC”);

No comments: