2009-12-29 17 views
14

MS Access: ¿Cómo reemplazar los valores en blanco (nulos) con 0 para todos los registros?¿Cómo reemplazar los valores en blanco (nulos) con 0 para todos los registros?

Supongo que tiene que hacerse con SQL. Puedo usar Buscar y Reemplazar para reemplazar 0 con blanco, pero no al revés (no voy a "encontrar" un espacio en blanco, incluso si ingreso [Ctrl-Barra espaciadora] que inserta un espacio.

Así que supongo necesita hacer SQL donde encuentro los valores nulos para MiCampo, vuelva a colocar todos ellos con 0.

Respuesta

18

Ir a la ventana de diseñador de consultas, cambie al modo SQL, y probar este:

Update Table Set MyField = 0 
Where MyField Is Null; 
+0

La primera respuesta también es correcta y me hubiera permitido obtenerla, pero esta tiene el beneficio adicional de las instrucciones específicas de Access que la hicieron ir un poco más rápido. ¡GRACIAS a todos ustedes por su ayuda, y Feliz Año Nuevo! – rick

3
UPDATE table SET column=0 WHERE column IS NULL 
12

Si intenta hacer esto con una consulta, esta es su respuesta:

SELECT ISNULL ([campo], 0) de [Tabla]

Editar

función ISNULL se utilizó incorrectamente - esta versión modificada utiliza IIF

SELECT IIF(ISNULL([field]), 0, [field]) FROM [table] 

Si desea reemplazar los valores reales en la tabla, deberá hacerlo de esta manera:

UPDATE [table] SET [FIELD] = 0 WHERE [FIELD] IS NULL 
+1

ISNULL en el formulario presentado no existe en MS Access SQL – Juliusz

+0

@Juliusz Correct. La 2da línea, usando 'WHERE [FIELD] IS NULL' es el uso correcto en MS Access SQL, ya sea seleccionando o actualizando. – vapcguy

3
UPDATE YourTable SET MyField = 0 WHERE MyField IS NULL 

funciona en la mayoría de los dialectos SQL. No uso Access, pero eso debería ayudarte a comenzar.

+0

Respuesta duplicada ... pero vi que entró exactamente en la misma fecha/hora que la de mopoke ... – vapcguy

0

Cambiaría la declaración SQL anterior para que sea más genérica. Usar comodines nunca es una mala idea cuando se trata de población masiva para evitar nulos.

Prueba esto:

Update Table Set * = 0 Where * Is Null; 
2

la siguiente consulta también trabaja y no se necesitará una consulta de actualización, si eso es lo que prefiere:

IIF(Column Is Null,0,Column) 
0

solo tenía este mismo problema, y terminé encontrando la solución más simple que funciona para mis necesidades. En las propiedades de la tabla, establezco el valor predeterminado en 0 para los campos que no quiero mostrar nulos. Muy facil.

+1

Pero eso no manejará los valores existentes. Solo se aplica a los valores que se agregarán después del cambio. – SchmitzIT

0

Utilicé un proceso de dos pasos para cambiar las filas con valores "en blanco" a valores "nulos" como marcadores de posición.

UPDATE [TableName] SET [TableName].[ColumnName] = "0" 
WHERE ((([TableName].[ColumnName])="")); 

UPDATE [TableName] SET [TableName].[ColumnName] = "Null" 
WHERE ((([TableName].[ColumnName])="0")); 
3

sin 'dónde está y' si de ...

Update Table Set MyField = Nz(MyField,0) 
2

mejor solución es utilizar NZ (nulo a cero) función durante la mesa de generar => NZ ([ColumnName]) Viene 0 donde es "nulo" en ColumnName.

+0

+1! Su respuesta resuelve el problema para las consultas, no las tablas. Además, para "limpiar" una tabla, debe crear una consulta de actualización y establecer los valores de columna como 'MyField: NZ (MyField, 0)' ¡EJECUTAR! Trabajos para Access2013 – Takedasama

+0

También funciona sin ", 0" => MyField: NZ (MyField) – user3292421

1

El uso de Buscar y reemplazar funcionará si escribe "nulo" en el buscar y pone un cero en el reemplazo ... se le advertirá que esto no se puede deshacer.

Cuestiones relacionadas