usar then sirve reemplazar que por para sql database postgresql null coalesce

then - reemplazar null por 0 postgresql



Usando COALESCE para manejar valores NULL en PostgreSQL (2)

Puede usar COALESCE junto con NULLIF para una solución corta y eficiente:

COALESCE( NULLIF(yourField,'''') , ''0'' )

La función NULLIF devolverá nulo si yourField es igual al segundo valor ( '''' en este caso), haciendo que la función COALESCE funcione completamente en todos los casos:

QUERY | RESULT --------------------------------------------------------------------------------- SELECT COALESCE(NULLIF(null ,''''),''0'') | ''0'' SELECT COALESCE(NULLIF('''' ,''''),''0'') | ''0'' SELECT COALESCE(NULLIF(''foo'' ,''''),''0'') | ''foo''

Tengo la siguiente consulta

SELECT DISTINCT pt.incentive_marketing, pt.incentive_channel, pt.incentive_advertising FROM test.pricing pt WHERE pt.contract_id = 90000 group by 1,2,3 order by pt.incentive_marketing;

La consulta anterior devuelve el o / p como se muestra en la imagen adjunta

Sin embargo, quiero reemplazar todos los valores nulos por 0 usando COALESCE. Por favor, háganme saber cómo se puede lograr esto en la consulta SELECT anterior

Ahora modifiqué aún más la consulta usando fusionar como abajo

SELECT COALESCE( pt.incentive_marketing, ''0'' ), COALESCE(pt.incentive_channel,''0''), COALESCE( pt.incentive_advertising,''0'') FROM test.pricing pt WHERE pt.contract_id = 90000 group by 1,2,3

el resultado de esto es como se adjunta en la imagen 2.

Aún recibo una fila con valores en blanco


Si usa 0 y una cadena vacía '''' y null para designar indefinido, tiene un problema de datos. Simplemente actualice las columnas y arregle su esquema.

UPDATE pt.incentive_channel SET pt.incentive_marketing = NULL WHERE pt.incentive_marketing = ''''; UPDATE pt.incentive_channel SET pt.incentive_advertising = NULL WHERE pt.incentive_marketing = ''''; UPDATE pt.incentive_channel SET pt.incentive_channel = NULL WHERE pt.incentive_marketing = '''';

Esto hará que la unión y la selección sean sustancialmente más fáciles de seguir.