powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / как обрабатывается NULL?
25 сообщений из 66, страница 2 из 3
как обрабатывается NULL?
    #39236314
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 16 мая 2016 г. 10:39:17:

Kdv> null не является нормальным значением. не бывает ничего, равного null (=null). Есть только is null.
не нужно запрещать то, что не ограничено стандартом.

зы: и Oracle, и MS SQL солидарны с этим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236319
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

никто и не собирался это запрещать :)
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236335
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Hvlad!
You wrote on 16 мая 2016 г. 10:58:37:

Hvlad> никто и не собирался это запрещать :)на дебаркадере ж запретили.
ну не папуасы ли?!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236362
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну ладно, идеологический такой запрет почему-то приводит в ужас. А практически? Нормально же все.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236367
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 16 мая 2016 г. 11:27:55:

Kdv> ну ладно, идеологический такой запрет почему-то приводит в ужас. А практически? Нормально же все.
А я так понимаю: Если закон один раз подмять, потом другой раз, потом начинать дырки в следствии затыкать,
как нам с тобой будет удобно, то это не закон будет, а кистень! (с)

зы: вообще-то, что там на дебаркадере происходит, глубоко наплевать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236380
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvА практически? Нормально же все.Выдать ошибку в синтаксическе корректном запросе - это нормально ?
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236433
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

ок, уговорил
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236859
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще, честно, не понимаю ажиотажа вокруг NULL . вот как не почитаешь очередной топик за NULL, все граждане упорно хотят привести его к какому-то значению.

допустим, NULL = "НИЗНАЮ".

к примеру, в некой базе:
возраст Васи 25 лет.
возраст Пети NULL.

запросы:

1) старше Петя за Васю?
ну, с Петей понятно, ему 25.
а вот возраст Васи = НИЗНАЮ, соответственно ответ выражения (25 > НИЗНАЮ) = НИЗНАЮ.


2) сколько лет Васе и Пете вместе?
25 + НИЗНАЮ = НИЗНАЮ.
Код: sql
1.
(25 + NULL) = NULL




3) вывести на экран всех, кто старше за Васю
Код: sql
1.
SELECT T.* FROM TABLENAME T WHERE (T.AGE > 25)


возраст Пети = НИЗНАЮ, с какого перепугу оно должно попадать в выборку?


4) вывести на экран всех, чей возраст я НИЗНАЮ.
Код: sql
1.
SELECT T.* FROM TABLENAME T WHERE (T.AGE = NULL)


вот шо здесь должна вернуть СУБД?
отдельно и самостоятельно нужно задуматься за то, больше ли значение НИЗНАЮ от значения НИЗНАЮ?


5)хотя, при всём, можно у той же СУБД спросить: выведи всех, чей возраст ты (СУБД) не знаешь
Код: sql
1.
SELECT T.* FROM TABLENAME T WHERE (T.AGE IS NULL)


или наоборот: выведи всех, чей возраст ты (СУБД) знаешь
Код: sql
1.
SELECT T.* FROM TABLENAME T WHERE (T.AGE IS NOT NULL)
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236885
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PEAKTOPSELECT T.* FROM TABLENAME T WHERE (T.AGE = NULL)
вот шо здесь должна вернуть СУБД?
отдельно и самостоятельно нужно задуматься за то, больше ли значение НИЗНАЮ от значения НИЗНАЮ?
какому-то мозгоклюю пришло в голову, что = NULL это неправильно, и вместо = надо использовать IS. С тех пор все мучаются.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236893
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvPEAKTOPSELECT T.* FROM TABLENAME T WHERE (T.AGE = NULL)
вот шо здесь должна вернуть СУБД?
отдельно и самостоятельно нужно задуматься за то, больше ли значение НИЗНАЮ от значения НИЗНАЮ?
какому-то мозгоклюю пришло в голову, что = NULL это неправильно, и вместо = надо использовать IS. С тех пор все мучаются.

мой пост перечитать ещё раз.

я вот об этом и говорю: СУБД, дай мне товрищей, возраст которых я НИЗНАЮ.
вот откуда СУБД возьмёт эти значения?
и это - не мозгоё.., с точки зрения Булевой логики - всё правильно.

то ли дело: СУБД, дай мне товарищей, возраст которых ТЫ не знаешь
Код: sql
1.
SELECT T.* FROM TABLENAME T WHERE (T.AGE IS NULL)
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236912
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PEAKTOP,

ты знаешь, субд знает... ты ударился в философствование. Я при вводе не знаю, поэтому НЕ указал значение, поэтому СУБД записала NULL. Она знает, что ты не знаешь.
Собственно, я про конструкцию IS NULL, которая удовлетворяет теоретиков языка SQL и трехзначной логики. Которая является в том числе звездецом для параметризированных запросов, которые не могут искать null по определению, для чего придумывают всякие костыли.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236914
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvкакому-то мозгоклюю пришло в голову, что = NULL это неправильно, и вместо = надо использовать IS. С тех пор все мучаются.
Логику можно понять. Но не совсем так.
"??? = NULL" - это правильная запись, корректная.
Чтобы ни было вместо ??? - в результате будет неизвестно, равно ли оно "неизвестно". Т.к. даже
"неизвестно" неизвестно, равно ли "неизвестно". Это логично и верно.
И потому "??? = NULL" - корректная запись. Такая же корректная, как и "1=1" или "1=2".
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236918
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е., я хотел сказать, что
" = NULL" - это правильно. Так же правильно, как и "1=2".
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236921
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

еще раз. = null по вашему правильно так же, как = 1 или = 2. Ок. Но = null ничего не выдаст, никогда. Потому что кто-то придумал, что выводить записи с null при поиске = null некрасиво, и вместо = null надо использовать is null, чтобы не смущать умы начинающих спецификой трехзначной логики.
И этот кто-то не учел, что в field = :param кроме значений могут передавать и null. Но в этом случае надо как-то заменять fied = :param на field is null. Т.е. сначала узнать, что в параметре, а только потом формировать запрос. Вот это "синтаксически нормально"?

Впрочем, это все риторика. Лично я считаю, что = null синтаксически некорректно, по двум причинам - null это ключевое слово, а = null - логическая бессмыслица, ибо всегда false. И контр-пример в виде 1 = 2 не катит, потому что его можно заменить на :param = :param, в котором null точно так же работать не будет.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236927
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvеще раз. = null по вашему правильно так же, как = 1 или = 2. Ок.
Нет, не ок :)

Я имел ввиду, что (??? = null) так же правильно, как и "1=2". Т.е. эвивалентно. Но не просто "=1" или "=2".

При =null не выдаст записи? Мне так и надо.
Когда я в параметр запроса "определить, чей возраст больше :PARAM" в :PARAM передаю "неизвестно", т.е. NULL (пользователь ничего не выбрал, или справочник не заполнен или мало ли что), то я однозначно ожидаю в результате 0 записей. А совсем не набор записей, у который возраст людей не указан. Именно так логично, а не автоматом заменять логику на неверную (если заменять на IS NULL).
Т.к. запрос "определить, у кого возраст не заполнен" совершенно не эквивалентен запросу "определить, чей возраст больше :PARAM".
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236940
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> по двум причинам - null это ключевое слово

Странная логика. А с константами сравнивать тоже нельзя?

kdv> а = null - логическая бессмыслица, ибо всегда false

Ну вот, столько писал и под конец выдал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236953
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ключевое или не ключевое слово всё равно. TRUE и FALSE тоже ключевые слова, однако сравнение с ними даёт совсем другой результат.

NULL штука особенная, а потому с ней надо использовать другой оператор сравнения. NULL это не значение, а состояние.

Что касается передачи NULL в параметры, то тут как раз всё нормально.

Код: sql
1.
SELECT * FROM T WHERE a =?


Это даже можно использовать. Например передав NULL я совершенно уверен, что запрос ничего не вернёт.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236978
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНапример передав NULL я совершенно уверен, что запрос ничего не вернёт.

вот и ПроктоСтоматологи подтянулись....

--------
я ждал именно вас, товарищи!
вы не поверите!

но никто лучше вас проблематику NULL не опишет.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236982
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PEAKTOP,

нет там никакой проблематики. Есть проблемы у новичков с недопониманием, прогибаться под них не имеет смысла.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39236988
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> NULL штука особенная, а потому с ней надо
Симонов Денис> использовать другой оператор сравнения.

А вот это как раз риторика, о которой говорил Дима. :)

Симонов Денис> Это даже можно использовать. Например передав
Симонов Денис> NULL я совершенно уверен, что запрос ничего не вернёт.

Можно-то можно. Но не нужно. Практического смысла в этом нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39237006
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамА вот это как раз риторика, о которой говорил Дима.
Риторика - это разговоры на эту тему. Все равно никто стандарт sql менять не будет.
А насчет ИБ - ну выдает where field = null ошибку синтаксиса. А что, такую конструкцию кто-то в здравом уме пишет? Ну пишут иногда 1=2. Но писать 1=null вроде пока никто не додумался, хоть на ИБ, хоть на ФБ.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39237017
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> Риторика - это разговоры на эту тему. Все равно никто стандарт sql менять не будет.

Именно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39237188
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 17 мая 2016 г. 11:28:35:

Kdv> А насчет ИБ - ну выдает where field = null ошибку синтаксиса.
> А что, такую конструкцию кто-то в здравом уме пишет? Ну пишут иногда 1=2.
> Но писать 1=null вроде пока никто не додумался, хоть на ИБ, хоть на ФБ.
при динамическом построении запроса автоматической подсистемой - запросто.
(если не озадачиться её допиливанием на предмет IS NULL)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39237271
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийKdv> Но писать 1=null вроде пока никто не додумался, хоть на ИБ, хоть на ФБ.
при динамическом построении запроса автоматической подсистемой - запросто.
(если не озадачиться её допиливанием на предмет IS NULL)


+100. Таких систем не одна и даже не несколько - особенно там, где пользователю дают относительную свободу действий.
...
Рейтинг: 0 / 0
как обрабатывается NULL?
    #39237337
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, динамические запросы от/при параметрах не особо помогут.
Поэтому и пишут всякие "= :a or is null".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / как обрабатывается NULL?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]