SQL Server 2008 - Edición de tablas: las columnas de bits requieren 'Verdadero' o 'Falso'
-
19-08-2019 - |
Pregunta
No es tanto una pregunta como una observación ...
Solo estoy actualizando a SQL Server 2008 en mi máquina de desarrollo antes de actualizar mis aplicaciones en vivo. No anticipé ningún problema ya que [creo] que generalmente uso T-SQL estándar, y probablemente no muy lejos del ANSI SQL estándar. Hasta ahora todo bien, pero realmente me sorprendió un cambio muy simple:
Estaba creando una tabla de búsqueda pequeña y simple para almacenar una lista de códigos e incluir una columna de bits para indicar el código predeterminado actual. Pero cuando utilicé la opción nueva / modificada 'Editar 200 filas principales' e ingresé mis 0 y 1 en la columna de bits, recibí un error:
'Valor no válido para la celda: la cadena era no reconocido como un booleano válido '
Después de un poco de rascarse la cabeza, probé Verdadero y Falso, y funcionaron.
Por lo tanto, parece que esta nueva función de edición requiere que se escriban 4 o 5 caracteres, en lugar del anterior 1.
Comprobando más, todavía podemos usar ' ... where bitval = 1
' pero ahora también podemos usar ' ... where bitval =' true '
'. Pero cualquier resultado devuelto representa estas columnas de bits como 0 o 1 todavía.
Todo parece medio paso atrás. No es el fin del mundo, sino una molestia innecesaria.
¿Alguien tiene alguna idea sobre este tema? ¿O hay otras Gotchas nuevas con SQL Server 2008?
Actualización 2012: Después de instalar SQL Server 2012, me doy cuenta de que este comportamiento se ha 'corregido': al igual que antes, ahora puedo ingresar 1/0 en lugar de Verdadero / Falso directamente en filas, usando la opción 'Editar 200 filas principales'. Es algo pequeño, pero estoy feliz.
Solución
Excepto que lo arruinaron y solo aplicaron la regla a medias. Intente usar ... = Verdadero en una declaración de actualización y vea qué sucede. O ve todo el camino o no lo hagas en absoluto. Lo siento, Microsoft, no puedo darte ninguna marca en eso
Otros consejos
Siempre ha podido usar 'Verdadero' y 'Falso' para comparar con columnas BIT ... Creo que este cambio a '' forzar '' es bueno tener claro que el campo es un BIT, y no un INT.
Personalmente, me gusta que C # no sea compatible con '' if (0) ... '' Supongo que es solo una preferencia por la claridad.
Acabo de encontrar esto (después de preparar algo más) Construido por diseño