SQL Server Bitwise operators store multiple values in one column

Imaginemos que un “contrato” tiene un estado, y también varios de ellos al mismo tiempo.

De este modo tenemos:

public
enum
EnumEstado : byte { Ninguno = 0, Pendiente = 1, Entregado = 2, Aceptado = 4, Rechazado = 8, Facturado = 16}

 

En la base de datos tendremos un campo en el que si el estado del contrato es “entregado” y “aceptado”, tendrá el valor 2+4=6

 

Y ahora viene la duda, ¿cómo podemos hacer un SELECT para encontrar los contratos que estén solo aceptados si en la base de datos tenemos el valor 6 y el estado “aceptado” es 4?

 

Select *
from contrato

where ((contrato.estado & 4)=4)

 

J

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s