@JohnFx's suggestion es una solución perfecta al problema en la mano. Sin embargo, es posible que desee estar interesado en saber cómo evitar que aparezca este tipo de situación y, al mismo tiempo, posiblemente resolver otros posibles problemas.
En particular, el hecho de que quisiera reemplazar los NULL con 0 inmediatamente podría indicar que nunca quiso que la columna retuviera NULL en primer lugar. Si ese es realmente el caso, debería haber añadido la columna con el especificador NOT NULL
:
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
Por supuesto, si intenta agregar una columna a una tabla NOT NULL
no vacío, obtendrá un error si no también proporciona un valor predeterminado para la columna, porque SQL Server intentaría agregar la columna con valores NULL que, de acuerdo con la definición, no están permitidos. Por lo tanto, añadir NOT NULL
columnas esta forma:
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
CONSTRAINT DF_tablename_IsConfirmed DEFAULT (0)
La parte CONSTRAINT DF_tablename_IsConfirmed
es opcional, puede dejar simplemente DEAFULT (0)
, pero aun así, recomendaría que usted pueda dar nombres explícitos a todas sus limitaciones, incluyendo los valores por defecto, porque de esa manera sería más fácil para ti soltar/recrearlos. Y por la misma razón (para facilitar el manejo de las restricciones), sería mejor para usted usar patrones fijos al nombrar las restricciones. El patrón en la declaración anterior (DF
para DEFAULT
, seguido del nombre de la tabla, seguido del nombre de la columna) es solo un ejemplo, podría aparecer uno diferente. Pero una vez que tienes, solo sé consistente.
+1 Pero como medida de seguridad sugeriría usar una cláusula WHERE: 'WHERE IsConfirmed IS NULL' Es un poco redundante en su caso, pero nunca es demasiado temprano para aprender a evitar un desastre. Una consulta de ACTUALIZACIÓN sin filtro ha sido la fuente de muchos errores de datos. –
Eso también me puso nervioso al escribirlo sin DÓNDE, pero no quería confundir el PO. Buen punto sin embargo. – JohnFx
+1 @PaulSasik: gracias 4 apuntándolo, también me salió claro. – Addicted