خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
استفاده از OFFSET FETCH در SQL Server
شروط OFFSET FETCH در SQL Server، برای تعیین حد تعداد ردیف های برگشتی از یک کوئری مورد استفاده قرار می گیرند. OFFSET و FETCH همیشه با دستور Order By همراه هستند و با آن مورد استفاده قرار می گیرند. اینها گزینه های اختیاری هستند که می توانند با order by مورد استفاده قرار گیرند.
OFFSET در واقع تعداد ردیف هایی که در Result set یک کوئری از آنها رد می شود(آنها را ندید می گیرد) و در خروجی نشان نمی دهد.
FETCH در واقع تعداد ردیف هایی که پس از OFFSET در خروجی کوئری نمایش می دهد. اگر OFFSET FETCH استفاده می کنید، OFFSET اجباری بوده ولی FETCH اختیاری است.
در ادامه با نحوه کار این دو آشنا خواهید شد و خواهید دید که چگونه باید از اینها استفاده کرد.
SYNTAX استفاده از OFFSET FETCH بصورت زیر می باشد.
خب، حالا اجازه دهید با مثال به طور کامل متوجه نحوه استفاده آنها شده و با طرز کار آنها آشنا شویم. ابتدا یک جدول با نام student ایجاد خواهیم کرد و سپس مقادیری را در آن Insert می کنیم.
حالاهمه رکوردهای این جدول را Serlct کرده و بر اساس ستون StudId آنها را مرتب سازی صعودی می کنیم.
حالا می خواهیم از OFFSET استفاده کنیم. قبل از استفاده از OFFSET، لطفا به تصویر بالا دقت کنید و تعدا رکوردها 11 عدد و از شماره 1 تا 11 هستند.
اگر بخواهیم از 4 رکورد اول صرفنظر کنیم و به نوعی آنها را رد کرده و در خروجی نشان ندهیم، از OFFSET باید استفاده کنیم.
حالا از FETCH استفاده می کنیم. همانطور که دیدید در کوئری فوق از FETCH استفاده نکردیم چون همانطور که گفته شد اختیاری است ولی در شرایطی هم لازم است از FETCH استفاده کنید.
صورت مسئله به این صورت است که 4 رکورد اول را رد کرده و فقط 5 رکورد بعدی را در Result set کوئری نشان دهیم. خب، اینجاست که FETCH را باید وارد ماجرا کنیم.
OFFSET در واقع تعداد ردیف هایی که در Result set یک کوئری از آنها رد می شود(آنها را ندید می گیرد) و در خروجی نشان نمی دهد.
FETCH در واقع تعداد ردیف هایی که پس از OFFSET در خروجی کوئری نمایش می دهد. اگر OFFSET FETCH استفاده می کنید، OFFSET اجباری بوده ولی FETCH اختیاری است.
در ادامه با نحوه کار این دو آشنا خواهید شد و خواهید دید که چگونه باید از اینها استفاده کرد.
SYNTAX استفاده از OFFSET FETCH بصورت زیر می باشد.
SELECT col1, col2, ....
FROM table_name
WHERE conditions
ORDER BY column_list [ASC |DESC]
OFFSET offset_row_count {ROW | ROWS}
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY
خب، حالا اجازه دهید با مثال به طور کامل متوجه نحوه استفاده آنها شده و با طرز کار آنها آشنا شویم. ابتدا یک جدول با نام student ایجاد خواهیم کرد و سپس مقادیری را در آن Insert می کنیم.
Create table Student ( StudId int identity(1,1) , StudName varchar(30), StudCode varchar(30))
insert into student values ('Rozer M', 'CodrozX3')
insert into student values ('Mahesh Singh', 'RodMSzG5')
insert into student values ('Sanjay Ak', 'SodAkzV4')
insert into student values ('Jack Peter', 'Jodrohn9')
insert into student values ('Suraj Rawat', 'Sodroag5')
insert into student values ('Munni M', 'Modfobj7')
insert into student values ('Honey',' Hodrihy9')
insert into student values ('Rahul Singh', 'Rodrihyd6')
insert into student values ('Mahesh uniyal', 'ModfihXFT')
insert into student values ('Nitesh Kumar', 'Nodtihu3')
insert into student values ('Munish Singh' ,'Muonirih56')
حالاهمه رکوردهای این جدول را Serlct کرده و بر اساس ستون StudId آنها را مرتب سازی صعودی می کنیم.
select * from student order by studId
حالا می خواهیم از OFFSET استفاده کنیم. قبل از استفاده از OFFSET، لطفا به تصویر بالا دقت کنید و تعدا رکوردها 11 عدد و از شماره 1 تا 11 هستند.
اگر بخواهیم از 4 رکورد اول صرفنظر کنیم و به نوعی آنها را رد کرده و در خروجی نشان ندهیم، از OFFSET باید استفاده کنیم.
select * from Student order by studId
OFFSET 4 ROWS
حالا از FETCH استفاده می کنیم. همانطور که دیدید در کوئری فوق از FETCH استفاده نکردیم چون همانطور که گفته شد اختیاری است ولی در شرایطی هم لازم است از FETCH استفاده کنید.
صورت مسئله به این صورت است که 4 رکورد اول را رد کرده و فقط 5 رکورد بعدی را در Result set کوئری نشان دهیم. خب، اینجاست که FETCH را باید وارد ماجرا کنیم.
SELECT * FROM Student ORDER BY studId
OFFSET 4 ROWS FETCH NEXT 5 ROWS ONLY
نمایش دیدگاه ها (1 دیدگاه)
دیدگاه خود را ثبت کنید: