Как заменить null на 0 в sql
Перейти к содержимому

Как заменить null на 0 в sql

  • автор:

TablePlus

When selecting data from a table, there might be some NULL values that you don’t want to show, or you want to replace it with 0 for the aggregate functions. Then you can use COALESCE to replace the NULL with 0.

For example, we have the table salaries with 5 columns: emp_no , from_date , to_date , salary , bonus . But the bonus column is optional and may contain NULL values.

emp_no salary from_date to_date bonus
10001 60117 1986-06-26 1987-06-26 2000
10001 62102 1987-06-26 1988-06-25 NULL
10001 66074 1988-06-25 1989-06-25 NULL
10001 66596 1989-06-25 1990-06-25 3000
10001 66961 1990-06-25 1991-06-25 1500
10001 71046 1991-06-25 1992-06-24 NULL
10001 74333 1992-06-24 1993-06-24 NULL
10001 75286 1993-06-24 1994-06-24 2000

Run this SELECT … COALESCE … statement to return 0 as the alternative value when bonus value is NULL:

In MySQL you can also use IFNULL function to return 0 as the alternative for the NULL values:

In MS SQL Server, the equivalent is ISNULL function:

In Oracle, you can use NVL function:

emp_no salary from_date to_date bonus
10001 60117 1986-06-26 1987-06-26 2000
10001 62102 1987-06-26 1988-06-25 0
10001 66074 1988-06-25 1989-06-25 0
10001 66596 1989-06-25 1990-06-25 3000
10001 66961 1990-06-25 1991-06-25 1500
10001 71046 1991-06-25 1992-06-24 0
10001 74333 1992-06-24 1993-06-24 0
10001 75286 1993-06-24 1994-06-24 2000

Need a good GUI tool for databases? TablePlus provides a native client that allows you to access and manage Oracle, MySQL, SQL Server, PostgreSQL and many other databases simultaneously using an intuitive and powerful graphical interface.

Need a quick edit on the go? Download for iOS

How to Replace Nulls with 0s in SQL

Null Values can be replaced in SQL by using UPDATE, SET, and WHERE to search a column in a table for nulls and replace them. In the example above it replaces them with 0.

Cleaning data is important for analytics because messy data can lead to incorrect analysis. Null values can be a common form of messy data. In aggregation functions they are ignored from the calculation so you need to make sure this is the behavior you are expecting, otherwise you need to replace null values with relevant values.

Video

How to use the UPDATE command?

The UPDATE command is a DML command as opposed to a DDL (Data Definition Language), DCL (Data Control Language), or TCL (Transaction Control Language) command. This means that it is used for modifying preexisting data. Other DML commands include: SELECT, INSERT, DELETE, etc.

UPDATE takes a table and uses the SET keyword to control what row to change and what value to set it to. The WHERE keyword checks a condition and, if true, the SET portion is run and that row is set to the new value. If false, it is not set to the new value.

Update can be used for a lot of different problems. For example:

To add 1 to every value in a column you can run:

Takes the values in a column and adds 1 to them.

To set every value to a random integer on the interval [1,10]:

Generates a random double precision (float8) type number from [0,1), multiplies it by 9, and adds 1 to that value and casts it to an integer type for each row.

To set values to 0 for even 1 for odd:

Uses MOD to set the column values to the remainder of the column values divided by 2.

Замена NULL на 0 в запросе SQL server

Я разработал запрос, и в результатах для первых трех столбцов я получаю NULL . Как я могу заменить его на 0 ?

9 ответов:

когда вы хотите заменить, возможно

  1. функция ISNULL и выражение COALESCE имеют аналогичный цели, но может вести себя по-разному.

  2. поскольку ISNULL-это функция, она вычисляется только один раз. Как описанные выше входные значения для выражения COALESCE могут быть оценено несколько раз.

  3. определение типа данных результирующего выражения отличается. ISNULL использует тип данных первого параметра, КОАЛЕСЦИРУЕТ следующим образом выражение CASE управляет и возвращает тип данных значения с помощью более высокий приоритет.

  4. поддерживает ли это выражение, результат индивидуален для функции isnull и СПЛОТИТЬСЯ. Возвращаемое значение функция isnull всегда считается не допускает значения null (предполагая, что возвращаемое значение не является нулевым), тогда как СПЛОТИТЬСЯ с ненулевыми параметрами считается NULL. Так выражения ISNULL(NULL, 1) и COALESCE (NULL, 1) хотя эквиваленты имеют разные значения обнуления. Это делает разница, если вы используете эти выражения в вычисляемых столбцах, создание ключевых ограничений или возвращаемое значение скалярной пользовательской функции детерминированный, чтобы его можно было индексировать, как показано ниже образец.

  1. проверки для ISNULL и COALESCE также различны. Например, значение NULL для ISNULL преобразуется в int, тогда как для COALESCE, необходимо указать тип данных.

  2. ISNULL принимает только 2 параметра в то время как COALESCE принимает переменную число параметров.

    Если вам нужно знать больше вот полный документ от msdn.

С coalesce :

хотя, где подводятся when condition then 1 , вы могли бы так же легко изменить sum до count , например:

( Count(null) возвращает 0, в то время как sum(null) возвращает значение null.)

Как составить sql запрос на замену null на 0?

Нужен запрос который будет преобразовывать значение столбца в 0 если оно null, но если нет, то должно возвращаться значение столбца.

Просто если в каком-то из столбцов стоит значение null, то в suma тоже получается null. Помогите решить проблему.

  • Вопрос задан более трёх лет назад
  • 4279 просмотров
  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter

DERBIAGLOBALISTO, если вот эти подзапросы:

всегда возвращают не более одной записи, можно попробовать переписать запрос так:

Если не поможет — надо уже предметно разбираться, смотреть какие у вас таблицы, связи, данные, индексы, каким получается план выполнения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *