Campo bool o booleano en tabla de sql server

09/09/2008 - 16:48 por Pedro | Informe spam
Quiero un campo en una tabla que me represente un flag o valor bool (true o
false). Cuales es la mejor alternativa? Bit? Tinyint? Char?

Preguntas similare

Leer las respuestas

#6 Maxi Accotto
12/09/2008 - 01:39 | Informe spam
Si es cierto, pero bit no siempre es facil de manejar desde las aplicaciones
o bien cuando necesitas ir hacia otros motores, char(1) es mas standard :)


Saludos
Maxi Accotto
Microsoft MVP en SQLServer
SQltotalconsulting
-

"Waldo" <[waldodj2000] a r r o b a [yahoo Punto com Punto ar]> escribió en
el mensaje de noticias:
Mostrar la cita
#7 Waldo
12/09/2008 - 15:26 | Informe spam
Ah, eso puede ser
#8 Gustavo Larriera (MVP)
13/09/2008 - 01:01 | Informe spam
No comparto tu idea, querido amigo Maxi.

Usar 'S' o 'N' no es demasiado bueno. Imaginemos que la base es usada por
personas que hablen inglés por ejemplo... además de lidiar con la
sensibilidad de mayúsculas/minúsculas, además de tener que poner más
"inteligencia" en las aplicaciones para enteneder que 'S' es verdadero y 'N'
es falso.

Si no se quiere usar BIT por una cuestión de ser un tipo demasiado
propietario de SQL Server, entonces es preferible usar algún tipo integer que
es un tipo de datos disponible en cualquier sistema.

Y luego almacenar con 0 (FALSE) y un valor no-cero para TRUE (prefiero 1),
siguiendo la idea clásica de C90.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Maxi Accotto" wrote:

Mostrar la cita
#9 Carlos M. Calvelo
13/09/2008 - 01:45 | Informe spam
Hola Gustavo,

On 13 sep, 01:01, Gustavo Larriera (MVP)
wrote:
Mostrar la cita
Otras consideraciones:

Si se tienen muchas columnas de este tipo habrá que considerar el
espacio que ocupan (mejor usar BIT). Si se suelen pedir muchos
registros
a la vez habrá que considerar la eficiencia. Supongo que cuesta mas
'empaquetar' y 'desempaquetar' los BIT (que, creo, resultan en tipo
numérico (int?)), que simplemente tener INT.
(No lo sé. Solo un par de ideas, porque habría que hacer pruebas)

En cuanto al razonamiento del idioma, tambien se puede tener '0' y '1'
(char) en vez de 0 y 1 (int). O 'T' / 'F'

Y, last but no least, no se pueden definir índices con columnas tipo
BIT.

Saludos,
Carlos
#10 Carlos M. Calvelo
13/09/2008 - 02:08 | Informe spam
Ah!
Y crear un User defined type 'Boolean' con una restricción (rule)
y usar ese tipo consecuentemente a la hora de definir las tablas.

Por ejemplo 'Boolean' basado en char(5) y con una restricción
@value IN ('true', 'false')

Saludos,
Carlos
Ads by Google
Search Busqueda sugerida