Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ GaussDB(DWS)/ Preguntas frecuentes/ Uso de la base de datos/ ¿Cómo reemplazo el resultado nulo por 0?
Actualización más reciente 2023-10-12 GMT+08:00

¿Cómo reemplazo el resultado nulo por 0?

Cuando se ejecuta OUTER JOIN (LEFT JOIN, RIGHT JOIN y FULL JOIN), el error de coincidencia en la unión externa genera un gran número de valores NULL. Puede reemplazar estos valores nulos por 0.

Puede usar la función COALESCE para hacerlo. Esta función devuelve el primer valor de parámetro no nulo en la lista de parámetros. Por ejemplo:

1
2
3
4
5
SELECT coalesce(NULL,'hello');
 coalesce
----------
 hello
(1 row)

Usa la combinación izquierda para unirte a las tablas course1 y course2.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT * FROM course1;
  stu_id  |  stu_name  |     cour_name
----------+------------+--------------------
 20110103 | ALLEN      | Math
 20110102 | JACK       | Programming Design
 20110101 | MAX        | Science
(3 rows)

SELECT * FROM course2;
 cour_id |     cour_name      | teacher_name
---------+--------------------+--------------
    1002 | Programming Design | Mark
    1001 | Science            | Anne
(2 rows)

SELECT course1.stu_name,course2.cour_id,course2.cour_name,course2.teacher_name FROM course1 LEFT JOIN course2 ON course1.cour_name = course2.cour_name ORDER BY 1;
  stu_name  | cour_id |     cour_name      | teacher_name
------------+---------+--------------------+--------------
 ALLEN      |         |                    |
 JACK       |    1002 | Programming Design | Mark
 MAX        |    1001 | Science            | Anne
(3 rows)

Utilice la función COALESCE para reemplazar valores nulos en el resultado de la consulta con 0 u otros valores distintos de cero:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
SELECT course1.stu_name,
 coalesce(course2.cour_id,0) AS cour_id,
 coalesce(course2.cour_name,'NA') AS cour_name,
 coalesce(course2.teacher_name,'NA') AS teacher_name
 FROM course1
 LEFT JOIN course2 ON course1.cour_name = course2.cour_name
 ORDER BY 1;
  stu_name  | cour_id |     cour_name      | teacher_name
------------+---------+--------------------+--------------
 ALLEN      |       0 | NA                 | NA
 JACK       |    1002 | Programming Design | Mark
 MAX        |    1001 | Science            | Anne
(3 rows)