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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top