Синтаксис SQL Oracle - проверка нескольких столбцов на наличие значения «NOT NULL» - PullRequest
10 голосов
/ 22 декабря 2011

Существует ли более краткий синтаксис для проверки, не являются ли несколько столбцов пустыми? Я ищу, чтобы упростить

weight IS NOT NULL AND
weight_unit IS NOT NULL AND
length IS NOT NULL AND
width IS NOT NULL AND
height IS NOT NULL AND
dimensional_unit IS NOT NULL

во что-то короче.

Использование Oracle, если это актуально.

Ответы [ 6 ]

15 голосов
/ 22 декабря 2011

С Закон де Моргана :

НЕ (А ИЛИ Б) = (НЕ А) И (НЕ Б)

Вы экономите 20 символов;)

NOT (
weight IS NULL OR
weight_unit IS NULL OR
length IS NULL OR
width IS NULL OR
height IS NULL OR
dimensional_unit IS NULL 
)
2 голосов
/ 22 декабря 2011

Насколько я знаю, такого синтаксиса нет.

Но если все они числовые, вы можете использовать этот трюк:

weight + weight_unit + length + width + height + dimensional_unit is not null
0 голосов
/ 15 июля 2017
ALTER TABLE X
   ADD CONSTRAINT C_X_NN
      CHECK (  (
               DECODE (weight, NULL, 0, 1) +
               DECODE (weight_unit, NULL, 0, 1) +
               DECODE (length      , NULL, 0, 1) +
               DECODE (width     , NULL, 0, 1) +
               DECODE (height      , NULL, 0, 1) +
               DECODE (dimensional_unit , NULL, 0, 1)
               ) = 0
            );
0 голосов
/ 16 октября 2015

Я пытался решить эту проблему. Если все столбцы / переменные имеют тип numeric или varchar2, то мы можем использовать следующий способ в sql, pl / sql:

LENGTH(COL1||COL2||COL3) IS NOT NULL 

Надеюсь, это поможет вам.

0 голосов
/ 28 января 2013

Как на счет этого ..... coalesce (field1, field2, ...., fieldn) не равно нулю

Я думаю, что это послужит цели !!!!

0 голосов
/ 22 декабря 2011

Если вы хотите проверить, не являются ли ВСЕ столбцы НЕ НЕДЕЙСТВИТЕЛЬНЫМИ, вы можете сначала объединить свои столбцы, а затем один раз проверить на НЕ НУЛЬ, например:

weight || weight_unit || length || width || height || dimensional_unit IS NOT NULL

Это проверит, все ли значения в этих полях не равны NULL.

Если просто проверить, может ли среди них быть NULL, то я думаю, что ваше первоначальное утверждение по этому вопросу все еще является лучшим способом сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...