[image]

SQL

 
1 2 3 4 5 6 7 22

yacc

старожил
★★★
tarasv> В контексте where результат выражения null эквивалентен false.
Нет - Unknown - это по стандарту.
Любое логическое выражение с Unknown дает Unknown
Но в результирующее множество выводятся только те, для которых выражение дает true
Отсекаются false и Unknown
   92.0.4515.10792.0.4515.107

tarasv

аксакал

tarasv>> В контексте where результат выражения null эквивалентен false.
yacc> Нет - Unknown - это по стандарту.

Немного не понял суть возражения. Стандарт это отражение взглядов Кодда на двоичную логику с тремя значениями и есть. Не только его взглядов и поэтому у меня Кодд обобщенный. Если же возражение насчет использования false то Unknown и false в контекcте where clause эквивалентны.
   97.0.4692.7197.0.4692.71
+
+1
-
edit
 

yacc

старожил
★★★
tarasv> Если же возражение насчет использования false то Unknown и false в контекcте where clause эквивалентны.
Возражения тут только в том, что Salary = NULL имеет результат Unknown, а не false.
SELECT возвращает результат если фильтр дает true, false и Unknown не попадают в результат.
Можно считать что false и Unknown в этом плане эквивалентны, как бы "себе на заметку по-бытовому" но результат строго Unknown
   92.0.4515.10792.0.4515.107

tarasv

аксакал

tarasv>> Если же возражение насчет использования false то Unknown и false в контекcте where clause эквивалентны.
yacc> Возражения тут только в том, что Salary = NULL имеет результат Unknown, а не false.

Так именно это я с самого начала и написал "null размножаются в любых выражениях". Этот жаргонизм я слышал много раз и думал что он общеизвестный.
   97.0.4692.7197.0.4692.71
+
-1
-
edit
 

Gudleifr

опытный

tarasv> Так именно это я с самого начала и написал
Т.е. факт, известный любому "настоящему программисту", вызвал бурную полемику? Странно. Вы, вообще, пробовали учиться программировать? Или только ходили за мастером, ключи подавали?
   96.096.0
LT Bredonosec #23.01.2022 13:03  @Gudleifr#23.01.2022 12:27
+
+1
-
edit
 
Gudleifr> Или только ходили за мастером, ключи подавали?
А вы случаем в обычной жизни не сантехником работаете?
Судя по выбору устойчивых выражений.
   51.0.2704.10651.0.2704.106
RU Gudleifr #23.01.2022 13:36  @Bredonosec#23.01.2022 13:03
+
-
edit
 

Gudleifr

опытный

Bredonosec> А вы случаем в обычной жизни не сантехником работаете?
Ну, с тех пор, как быдло подалось в IT-шники, приходится и сантехником, и плотником... Вчера, например, электриком. Заехал в ту квартиру, помните, где про долги соседей писал, а эти орлы перегрузили сеть и подумали, что это им не автомат, а приставы отрубили... И три дня сидели без света.
   96.096.0
+
+2
-
edit
 

tarasv

аксакал

Gudleifr> Т.е. факт, известный любому "настоящему программисту", вызвал бурную полемику? Странно. Вы, вообще, пробовали учиться программировать? Или только ходили за мастером, ключи подавали?

Вы, как обычно, вообще не поняли что мы обсуждаем. А обсуждаем мы не программирование, а сленг, который я ошибочно посчитал общеизвестным.
   97.0.4692.7197.0.4692.71
+
+1
-
edit
 

yacc

старожил
★★★
yacc>> Возражения тут только в том, что Salary = NULL имеет результат Unknown, а не false.
tarasv> Так именно это я с самого начала и написал "null размножаются в любых выражениях". Этот жаргонизм я слышал много раз и думал что он общеизвестный.
Практика показывает что не все знают про Unknown и думают что это false :p
Что в общем-то в большинстве не мешает писать правильные фильтры.
Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java

Правда народ умудряется для лаконичности втащить в фильтры функции типа ISNULL(Salary,0)= 0 , а потом искренне удивляется - а что так производительность просела... :p
   92.0.4515.10792.0.4515.107
EE Татарин #24.01.2022 11:41  @yacc#24.01.2022 11:02
+
+1
-
edit
 

Татарин

координатор
★★★★★
yacc> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java
Как минимум в c# есть и широко применяются nullable-типы. Не то, чтоб это было "unknown", но на практике именно этот смысл и несёт.

И вообще, это какая-то жуть, я имею в виду сам подход. Всё же, минимально понимать основные концепции языка перед применением нужно.
   97.0.4692.7197.0.4692.71

U235

старожил
★★★★★

yacc> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java

Там есть Nothing :)
   96.096.0

yacc

старожил
★★★
yacc>> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java
U235> Там есть Nothing :)
Это не совсем то.
   92.0.4515.10792.0.4515.107
RU yacc #24.01.2022 12:16  @Татарин#24.01.2022 11:41
+
-
edit
 

yacc

старожил
★★★
yacc>> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java
Татарин> Как минимум в c# есть и широко применяются nullable-типы. Не то, чтоб это было "unknown", но на практике именно этот смысл и несёт.
Это немного другое.
В ЯП типа шарпа или питона можно выставить Null ( или None ) практически для всего, в SQL если поставить его для поля NOT NULL - запрос обломится с ошибкой.
   92.0.4515.10792.0.4515.107

U235

старожил
★★★★★

yacc> Это не совсем то.

Очень родственная вещь. Идея не инициализированного значения переменной или объекта во многом перекликается с Null
   96.096.0

cholev

втянувшийся

☠☠
yacc>> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java
U235> Там есть Nothing :)

Nothing есть в VB. В C# называется null.
   2222

U235

старожил
★★★★★

cholev> Nothing есть в VB. В C# называется null.

Я эти языки учил одним пакетом, т.к. .NET, и т.к. несколько лет на них уже не пишу, то в голове они немного перепутались.
   96.096.0

yacc

старожил
★★★
U235> Очень родственная вещь. Идея не инициализированного значения переменной или объекта во многом перекликается с Null
Нет.
Неинициализированная переменная может влегкую содержать мусор.

Скажем завел я в C++ так
int val;

и в этой val может быть какое угодно г-но, что кардинально отличается от NULL
   92.0.4515.10792.0.4515.107
EE Татарин #24.01.2022 13:50  @cholev#24.01.2022 12:54
+
-
edit
 

Татарин

координатор
★★★★★
yacc>>> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java
U235>> Там есть Nothing :)
cholev> Nothing есть в VB. В C# называется null.
А это совсем разные вещи. В VB "nothing" - это состояние var'a. То есть, переменная есть, но она не типизирована, не определены ни значение, ни тип. Но сама переменная есть. Просто хранит "насиньг".

Прямой аналог в C# - базовый object, boxed.
Null же в ссылке в с# - это отсутствие объекта вообще.

...
Можно спорить, что больше соотвествует нулю в SQL, но это будет абстрактный спор и разговор вообще, строго говоря, прямого соотвествия нет.

Но вот соотвествие объектов c# и VB - вопрос вполне конкретный и практический (например, при вызове dll одного языка из другого).
   97.0.4692.7197.0.4692.71
RU yacc #24.01.2022 13:53  @Татарин#24.01.2022 13:50
+
-
edit
 

yacc

старожил
★★★
Татарин> Можно спорить, что больше соотвествует нулю в SQL, но это будет абстрактный спор и разговор вообще, строго говоря, прямого соотвествия нет.
Именно так - строго говоря нет прямого соответствия
   92.0.4515.10792.0.4515.107
EE Татарин #24.01.2022 13:58  @yacc#24.01.2022 13:24
+
-
edit
 

Татарин

координатор
★★★★★
U235>> Очень родственная вещь. Идея не инициализированного значения переменной или объекта во многом перекликается с Null
yacc> Нет.
yacc> Неинициализированная переменная может влегкую содержать мусор.
Скажем так: что бы ни содержала неинициализированная переменная нативного типа, это всегда определённое значение этого типа. По содержимому никогда не сказать, что она неинициализирована.

yacc> Скажем завел я в C++ так
yacc> int val;
yacc> и в этой val может быть какое угодно г-но, что кардинально отличается от NULL
Чаще всего не будет, из-за секурити. Нули будут в большинстве современных связок ОС+компилер.
Ну, и в c# так (если int - unboxed).
   97.0.4692.7197.0.4692.71
RU yacc #24.01.2022 14:18  @Татарин#24.01.2022 13:58
+
+1
-
edit
 

yacc

старожил
★★★
Татарин> Скажем так: что бы ни содержала неинициализированная переменная нативного типа, это всегда определённое значение этого типа. По содержимому никогда не сказать, что она неинициализирована.
В SQL если не сказано иное это INT чем уже отличается
Скажем я сделал запрос:
SELECT NULL AS A, GETDATE() AS B
Так вот А будет INT, а B - DATETIME

yacc>> и в этой val может быть какое угодно г-но, что кардинально отличается от NULL
Татарин> Чаще всего не будет, из-за секурити. Нули будут в большинстве современных связок ОС+компилер.
Помнится в VC6.0 в Debug это инициализировалось нулем, а вот в Release - нет - чтобы не тратить время на то, что не просили - инициализация это код.
Что при неаккуратности приводило к ошибке.
   92.0.4515.10792.0.4515.107
BG cholev #24.01.2022 14:30  @Татарин#24.01.2022 13:50
+
-
edit
 

cholev

втянувшийся

☠☠
yacc>>>> Ну просто потому что в обычных ЯП нет Unknown - например в C# или Java
Татарин> U235>> Там есть Nothing :)
cholev>> Nothing есть в VB. В C# называется null.
Татарин> А это совсем разные вещи. В VB "nothing" - это состояние var'a. То есть, переменная есть, но она не типизирована, не определены ни значение, ни тип. Но сама переменная есть. Просто хранит "насиньг".

Это справедливо для VB6.0 100 лет назад
В VB.NET
Dim var as Integer
var=0
Dim var as Integer?
var=Nothing и var is Integer
   2222

16-й

аксакал
★★
yacc> Скажем я сделал запрос:
yacc> SELECT NULL AS A, GETDATE() AS B
yacc> Так вот А будет INT, а B - DATETIME

Там всяких граблей. Например, в оракле:

select 'XX' as nn from dual
union all
select null from dual

Все ок.

select 'XX' as nn from dual
union all
select null + 0 from dual

Еггог. Маст хэв сейм дататайп...

select null || '' as nn from dual
union all
select null + 0 from dual

Опять хорошо.

select '' as nn from dual
union all
select null + 0 from dual

Опять Еггог. Хотя:

select 'Ку-ку' as nn from dual where (select '' as nn from dual) is null

Даст нам Ку-ку.
   96.0.4664.4596.0.4664.45
EE Татарин #24.01.2022 16:07  @cholev#24.01.2022 14:30
+
-
edit
 

Татарин

координатор
★★★★★
cholev> Это справедливо для VB6.0 100 лет назад
cholev> В VB.NET
А это уже совсем другой язык.

cholev> Dim var as Integer?
Это нормальный нуллабле. Как в c#.
   97.0.4692.7197.0.4692.71
+
-1
-
edit
 

Gudleifr

опытный

tarasv> А обсуждаем мы не программирование
Ну, в этом-то никто не сомневался...

P.S. Не, серьезно, забить для этого мусора тему SQL? Что-то у вас с маршрутизацией на форуме.
   96.096.0
1 2 3 4 5 6 7 22

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru