Saludo al Visitante

Bienvenido a mi web

jueves, febrero 01, 2007

Equivalente al LIMIT de MySQL en SQL SERVER

Todos sabemos que es un dolor de cabeza paginar una selección de registros en SQL SERVER ya que en ninguna de sus versiones, existe una función parecida al LIMIT de MySQL.
Pero bueno que podemos hacer para quitarnos el dolor de cabeza.
  • Primero que todo, diseñar bien nuestras tablas:
Digo diseñar bien, porque si la tabla que vamos a paginar no tiene un campo identity o que enumere consecutivamente los registros, no podremos realizar el paginado con éxito. Esto no quiere decir que con otro tipo de campo no se pueda realizar la limitación de la selección, que no es más que la base del paginado.

  • Luego de tener bien diseñada la tabla, para limitar la selección ejecutamos la siguiente query:
SELECT TOP(cantidad_de_reg_x_pagina) * FROM nombre_tabla WHERE campo_id BETWEEN num_ini AND cant_reg_de_la _tabla

En la consulta usamos el TOP() para seleccionar realmente la cantidad de records que deseamos, si no lo usamos corremos el riesgo que en el intervalo de registros que vamos a listar, se hayan borrado algunos records y entonces si el paginado nos tenía que mostrar 20 registros y se borraron 2, solo nos mostrará 18.

Esto se puede realizar con cualquier tipo de datos no se limita solamente al campo identity de una tabla, pero se debe tener cuidado a la hora de elegir el campo, este debe ser una columna donde no se repitan los récords.

Carlos Hernández Güell