COUNT(expresion)
возвращает количество строк, где expresion
равно , не равно нулю . Таким образом, SELECT COUNT (COL_NAME) FROM TABLE WHERE COL_NAME IS NULL
вернет 0, потому что вы учитываете только col_name
, где col_name
равно нулю, а число, кроме нуля, равно нулю. COUNT(*)
вернет количество строк запроса:
SELECT COUNT (*) FROM TABLE WHERE COL_NAME IS NULL
Другие два запроса, вероятно, не возвращают никаких строк, так как они пытаются сопоставить строки с одним пустым символом, а ваш запрос дампа указывает, что столбец фактически содержит нули.
Если у вас есть строки с переменными строками пробелов, которые вы хотите включить в счетчик, используйте:
SELECT COUNT (*) FROM TABLE WHERE trim(COL_NAME) IS NULL
trim(COL_NAME)
удалит начальные и конечные пробелы. Если строка не что иное, как пробелы, тогда строка становится ''
, что эквивалентно нулю в Oracle.