|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 10:40 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Мимопроходящий, никто и не собирался это запрещать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 10:43 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Hello, Hvlad! You wrote on 16 мая 2016 г. 10:58:37: Hvlad> никто и не собирался это запрещать :)на дебаркадере ж запретили. ну не папуасы ли?! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 11:00 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Мимопроходящий, ну ладно, идеологический такой запрет почему-то приводит в ужас. А практически? Нормально же все. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 11:23 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 16 мая 2016 г. 11:27:55: Kdv> ну ладно, идеологический такой запрет почему-то приводит в ужас. А практически? Нормально же все. А я так понимаю: Если закон один раз подмять, потом другой раз, потом начинать дырки в следствии затыкать, как нам с тобой будет удобно, то это не закон будет, а кистень! (с) зы: вообще-то, что там на дебаркадере происходит, глубоко наплевать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 11:32 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
kdvА практически? Нормально же все.Выдать ошибку в синтаксическе корректном запросе - это нормально ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 11:42 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
hvlad, ок, уговорил ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 12:41 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
вообще, честно, не понимаю ажиотажа вокруг NULL . вот как не почитаешь очередной топик за NULL, все граждане упорно хотят привести его к какому-то значению. допустим, NULL = "НИЗНАЮ". к примеру, в некой базе: возраст Васи 25 лет. возраст Пети NULL. запросы: 1) старше Петя за Васю? ну, с Петей понятно, ему 25. а вот возраст Васи = НИЗНАЮ, соответственно ответ выражения (25 > НИЗНАЮ) = НИЗНАЮ. 2) сколько лет Васе и Пете вместе? 25 + НИЗНАЮ = НИЗНАЮ. Код: sql 1.
3) вывести на экран всех, кто старше за Васю Код: sql 1.
возраст Пети = НИЗНАЮ, с какого перепугу оно должно попадать в выборку? 4) вывести на экран всех, чей возраст я НИЗНАЮ. Код: sql 1.
вот шо здесь должна вернуть СУБД? отдельно и самостоятельно нужно задуматься за то, больше ли значение НИЗНАЮ от значения НИЗНАЮ? 5)хотя, при всём, можно у той же СУБД спросить: выведи всех, чей возраст ты (СУБД) не знаешь Код: sql 1.
или наоборот: выведи всех, чей возраст ты (СУБД) знаешь Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 18:43 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
PEAKTOPSELECT T.* FROM TABLENAME T WHERE (T.AGE = NULL) вот шо здесь должна вернуть СУБД? отдельно и самостоятельно нужно задуматься за то, больше ли значение НИЗНАЮ от значения НИЗНАЮ? какому-то мозгоклюю пришло в голову, что = NULL это неправильно, и вместо = надо использовать IS. С тех пор все мучаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 19:52 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
kdvPEAKTOPSELECT T.* FROM TABLENAME T WHERE (T.AGE = NULL) вот шо здесь должна вернуть СУБД? отдельно и самостоятельно нужно задуматься за то, больше ли значение НИЗНАЮ от значения НИЗНАЮ? какому-то мозгоклюю пришло в голову, что = NULL это неправильно, и вместо = надо использовать IS. С тех пор все мучаются. мой пост перечитать ещё раз. я вот об этом и говорю: СУБД, дай мне товрищей, возраст которых я НИЗНАЮ. вот откуда СУБД возьмёт эти значения? и это - не мозгоё.., с точки зрения Булевой логики - всё правильно. то ли дело: СУБД, дай мне товарищей, возраст которых ТЫ не знаешь Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 20:04 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
PEAKTOP, ты знаешь, субд знает... ты ударился в философствование. Я при вводе не знаю, поэтому НЕ указал значение, поэтому СУБД записала NULL. Она знает, что ты не знаешь. Собственно, я про конструкцию IS NULL, которая удовлетворяет теоретиков языка SQL и трехзначной логики. Которая является в том числе звездецом для параметризированных запросов, которые не могут искать null по определению, для чего придумывают всякие костыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 21:16 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
kdvкакому-то мозгоклюю пришло в голову, что = NULL это неправильно, и вместо = надо использовать IS. С тех пор все мучаются. Логику можно понять. Но не совсем так. "??? = NULL" - это правильная запись, корректная. Чтобы ни было вместо ??? - в результате будет неизвестно, равно ли оно "неизвестно". Т.к. даже "неизвестно" неизвестно, равно ли "неизвестно". Это логично и верно. И потому "??? = NULL" - корректная запись. Такая же корректная, как и "1=1" или "1=2". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 21:19 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Т.е., я хотел сказать, что " = NULL" - это правильно. Так же правильно, как и "1=2". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 21:24 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
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 точно так же работать не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 21:33 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
kdvеще раз. = null по вашему правильно так же, как = 1 или = 2. Ок. Нет, не ок :) Я имел ввиду, что (??? = null) так же правильно, как и "1=2". Т.е. эвивалентно. Но не просто "=1" или "=2". При =null не выдаст записи? Мне так и надо. Когда я в параметр запроса "определить, чей возраст больше :PARAM" в :PARAM передаю "неизвестно", т.е. NULL (пользователь ничего не выбрал, или справочник не заполнен или мало ли что), то я однозначно ожидаю в результате 0 записей. А совсем не набор записей, у который возраст людей не указан. Именно так логично, а не автоматом заменять логику на неверную (если заменять на IS NULL). Т.к. запрос "определить, у кого возраст не заполнен" совершенно не эквивалентен запросу "определить, чей возраст больше :PARAM". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 21:48 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
kdv> по двум причинам - null это ключевое слово Странная логика. А с константами сравнивать тоже нельзя? kdv> а = null - логическая бессмыслица, ибо всегда false Ну вот, столько писал и под конец выдал... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 22:28 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
ключевое или не ключевое слово всё равно. TRUE и FALSE тоже ключевые слова, однако сравнение с ними даёт совсем другой результат. NULL штука особенная, а потому с ней надо использовать другой оператор сравнения. NULL это не значение, а состояние. Что касается передачи NULL в параметры, то тут как раз всё нормально. Код: sql 1.
Это даже можно использовать. Например передав NULL я совершенно уверен, что запрос ничего не вернёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 22:47 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Симонов ДенисНапример передав NULL я совершенно уверен, что запрос ничего не вернёт. вот и ПроктоСтоматологи подтянулись.... -------- я ждал именно вас, товарищи! вы не поверите! но никто лучше вас проблематику NULL не опишет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 23:42 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
PEAKTOP, нет там никакой проблематики. Есть проблемы у новичков с недопониманием, прогибаться под них не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 23:51 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Симонов Денис> NULL штука особенная, а потому с ней надо Симонов Денис> использовать другой оператор сравнения. А вот это как раз риторика, о которой говорил Дима. :) Симонов Денис> Это даже можно использовать. Например передав Симонов Денис> NULL я совершенно уверен, что запрос ничего не вернёт. Можно-то можно. Но не нужно. Практического смысла в этом нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 00:13 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамА вот это как раз риторика, о которой говорил Дима. Риторика - это разговоры на эту тему. Все равно никто стандарт sql менять не будет. А насчет ИБ - ну выдает where field = null ошибку синтаксиса. А что, такую конструкцию кто-то в здравом уме пишет? Ну пишут иногда 1=2. Но писать 1=null вроде пока никто не додумался, хоть на ИБ, хоть на ФБ. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 00:54 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
kdv> Риторика - это разговоры на эту тему. Все равно никто стандарт sql менять не будет. Именно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 01:46 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 11:30 |
|
как обрабатывается NULL?
|
|||
---|---|---|---|
#18+
МимопроходящийKdv> Но писать 1=null вроде пока никто не додумался, хоть на ИБ, хоть на ФБ. при динамическом построении запроса автоматической подсистемой - запросто. (если не озадачиться её допиливанием на предмет IS NULL) +100. Таких систем не одна и даже не несколько - особенно там, где пользователю дают относительную свободу действий. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 12:32 |
|
|
start [/forum/topic.php?fid=40&msg=39236362&tid=1562176]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 429ms |
0 / 0 |