以前使用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語法的字串轉換函式:
此轉換函式範例:
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:
Post a Comment