2016-01-21 16 views
-1

Я использую Oracle SQL. У меня есть 2 сценария:Как найти ненулевые значения в oracle (25 столбцов)

1) Для того, чтобы выяснить, если хотя бы один из 25 столбцов не является нулевым (может быть более чем 1)

2) или, если все 25 столбцов не нулевой

Нужно ли писать не Null-условие для всех 25 столбцов?

ответ

0

Coalesce должно помочь, что-то вроде этого:

SELECT CASE WHEN COALESCE(field1, field2, field3...) is NULL THEN 'AllNULL' 
ELSE 'OneOrMoreNotNULL' END as 'NULLcontent' FROM tbl 
+0

Мне нужно выяснить, имеет ли данные один столбец null или все столбцы null –

+0

@Aditya kommu Это соответствует вашей спецификации, как указано в требовании № 1 «хотя бы один из 25 столбцов не равен нулю». Если это изменилось, отредактируйте исходное сообщение с помощью ссылки редактирования. –

0

Попробуйте что-то вроде этого:

SELECT CASE LENGTH(SUBSTR(COL_1, 1, 1) || 
        SUBSTR(COL_2, 1, 1) || 
        ...     || 
        SUBSTR(COL_25, 1, 1)      
        ) 
     WHEN 25 THEN 'ALL NOT NULL' 
     WHEN 24 THEN '1 COLUMN NULL' 
     ... 
    END CASE 
FROM YOUR_TABLE 

Если у вас есть столбцы, отличные от varchar, вам нужно, чтобы бросить их varchar использовать этот подход

0

Вы можете использовать GREATEST (или LEAST), чтобы проверить, являются ли какие-либо элементы в списке нулевыми (для выражений согласованного типа данных).

select greatest(owner, object_name, to_char(object_id), to_char(data_object_id)) x, 
     owner, object_name, object_id, data_object_id 
from all_objects where object_name in ('DUAL'); 

Если какое-либо из значений в списке выражений, поставляемых в GREATEST, равно null, возвращаемое значение будет равно нулю. Он возвращает только ненулевое значение, если все выражения не равны нулю.

Смежные вопросы