2012-05-29 14 views
5

Tengo una tabla con las siguientes columnas:Establecer falsa en la columna específica para todas las filas

ID Name 
1  test1 
2  test2 

Ahora añade nueva columna IsConfirmed. Y esta columna contiene null en todas las filas.

ID Name IsConfirmed 
1  test1  null 
2  test2  null 

¿Cómo puedo establecer false a IsConfirmed la columna a todas las filas de la tabla utilizando T-SQL?

Gracias

Respuesta

17
UPDATE YourTableName 
SET IsConfirmed=0 
WHERE isConfirmed is Null 

No quiero ser grosero, pero le has puesto ningún esfuerzo en la investigación de este antes de pedir?

+2

+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. –

+0

Eso también me puso nervioso al escribirlo sin DÓNDE, pero no quería confundir el PO. Buen punto sin embargo. – JohnFx

+0

+1 @PaulSasik: gracias 4 apuntándolo, también me salió claro. – Addicted

1

@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.

Cuestiones relacionadas