Datos personales

Mi foto
Colonia Caroya, Córdoba, Argentina
Ingeniero en Sistemas de Información

03 julio 2008

¿Cómo obtener filas al azar desde una base de datos?

Alguna vez por alguna rara razón nos encontraremos con la necesidad de extraer registros de una base de datos de manera desordenada y que se vuelva a desordenar en cada consulta, es decir, obtener datos de una manera totalmente aleatoria en cada consulta.

Y como se imaginaran cada motor tendrá su sintaxis o truco para lograr esto. Aquí pongo el modo de lograr esto en Mysql, PostgreSQL, SQL Server, IBM DB2 y Oracle.

  • MySQL
SELECT column FROM table
ORDER BY RAND()
LIMIT 1

  • PostgreSQL
SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

  • SQL Server
SELECT TOP 1 column FROM table
ORDER BY NEWID()

  • IBM DB2
SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY

  • Oracle
SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1


Saludos..

marce

01 julio 2008

Codigos 2D - La evolución del código de barras

Todos hemos visto códigos de barra, están impreso en la mayoría de artículos que compramos, libros, impuestos, facturas, etc. Básicamente es una representación gráfica mediante elementos claros y oscuros de caracteres alfanuméricos, surgida allá en el tiempo por los años 50 para transmitir información de manera rápida y fiable con la ayuda de dispositivos electrónicos (por lo menos un lector de códigos de barras y una computadora).
Como harán observado es un buen método, que agiliza mucho las cosas, sin embargo habrán visto que tienen algunos inconvenientes, como la distancia entre el lector y el código, la cantidad de información que puede contener el código, el contar con un aparato especializado para la tarea (el lector de barras). Por esas razones, el código de barra evoluciono a uno denominado códigos bidimensionales (2D). Los códigos de barra en dos dimensiones, también denominadados "bidis", pueden ser leídos y procesados a gran velocidad por distintos dispositivos. Con la llegada de soft para teléfonos celulares con cámara que interpretan estos códigos, se ha popularizado su uso, en especial en Japón donde es un furor y esta pegando fuerte en Europa. Inicialmente los códigos 2D eran para tareas de logística, transporte, clasificación de mercancía, identificación de personas y control de accesos. Recuerdo haber visto un vídeo de su uso hace muchisimos años en los ferrocarriles de carga de EEUU, aunque la idea era buena, la suciedad que se pegaba en los laterales de los trenes hizo que se descartara. Existen más de 30 tipos diferentes de códigos 2D. Entre los más usados encontramos a Semacode, QR y Datamatrix. Cada uno de estos códigos tienen sus ventajas y desventajas, como todo, y sus usos mas recomendados. Por ej. Semacode y QR son mas usados para trabajar con celulares, para codificar url, sms, email, etc, y Datamatrix se usa mas en procesos industriales para marcar piezas por ej. Cabe aclarar que QR es una especie de Open Source, ya que su creador no ejerce los derechos de su patente y se encuentra mucha información para poder implementarlo. Acá podemos ver las diferencias visuales entre cada uno:

Semacode

Es un pequeño cuadrado con zonas blancas y negras en su interior, con aspecto de crucigrama.


QR


Se diferencia de los anteriores por tres cuadrados negros que muestran en las esquinas y que sirven para establecer la orientación correcta. Es uno de los formatos más extendidos en Japón y un estándar de facto en los teléfonos móviles. Fue creado por la compañía japonesa Denso-Wave y diseñado inicialmente en 1994 para los proveedores de piezas de automoción, como indica su nombre QR ('Quick Response', respuesta rápida), ya que se pensó para que pudiera ser leído y decodificado a gran velocidad en cadenas de almacenamiento y montaje.


Datamatrix


Con un aspecto similar a Semacode, este código se puede usar en objetos de reducido tamaño y permite bajas resoluciones.



Hay que tener en cuenta que la información que pueden contener estos códigos es bastante generosa en comparación a los códigos de barra comunes. Por ej. el código QR puede contener la siguiente cantidad de caracteres:
  • Solo numérico - Máx. 7,089 caracteres
  • AlfanuméricoMáx. 4,296 caracteres
  • Binario (8 bits) - Máx. 2,953 bytes

¿Cuales son las ventajas y usos de estas tecnologías? Es la pregunta que ahora se deben estar realizando y también contestando, imaginando posibles escenarios donde utilizarla. Teniendo en cuenta que estos códigos pueden estar en cualquier superficie, por ej: publicaciones impresas, sitios web, carteles en la via publica, remeras, tarjetas personales, monitores, celulares, etc. y que para su consumo, utilizando el código QR, cualquier celular con cámara es suficiente, nos encontramos con un espectro de aplicaciones limitado solo a nuestra imaginación y creatividad. Los usos que se están dando en la actualidad es sobre todo para las url, en especial para bajar contenido para los celulares, como habrán probado alguna vez, escribir una url, sobre todo si es compleja, con un teclado de celular, nos hace desistir de hacerlo con solo pensarlo. Por esos muchos sitios ponen la imagen del código QR, uno apunta con su cel al monitor, apreta un botón y listo, el celular decodifica la url correctamente y navega hacia esa dirección.
Lo mismo para mandar SMS, sobre todo para adquirir contenidos o participar en votaciones televisivas, el celular automaticamente sera configurado para mandar el sms con el contenido correcto al numero correcto.

Su uso en publicidad también se esta extendiendo mucho, y es la verdad muy útil, imaginemos sino que una persona lee en una revista, o ve un anuncio en la calle y en ese momento no tenemos tiempo o los medios para escribir en algún lugar los datos del producto o la dirección web, perdiendo las empresas un potencial cliente, con este sistema, la persona solo deberá sacar una foto al código y listo, en su celular quedara almacenado toda la información necesaria.

Otras de sus aplicaciones que harán la vida más practica cuando se estandaricen algunas cosas, es la de emplear los códigos 2D en las tarjetas personas, así para agendar alguien con todos sus datos en nuestro teléfono celular, solo tendríamos que sacar una foto a su tarjeta y listo, contacto agregado sin equivocaciones y sin perder tiempo.

Un uso inverso que podemos hacer es la de almacenar la foto del código en el celular, pero sin procesarla, para usarla por ej como cupones de descuento para ir al cine o cosas similares, es decir, sacarle una foto al código bidimensional que sirve como cupón de descuento y luego al llegar al lugar reproducirlo en la pantalla del teléfono para que un scanner lo lea y efectivice los beneficios. La ventaja de esto es que no se necesita instalar un soft especial en el celular, solo hay que sacar una foto al código.

Ej de sus usos:














En próximo post seguiré hablando un poco mas de esta tecnología, en especial de QR y de como generar nuestros propios códigos QR.


Que tengan un buen día...


Marce