|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
есть такой запрос для примера: Код: sql 1. 2. 3. 4. 5.
Результат: выборка с двумя строками1 5 если мы ставим not в условие Код: sql 1. 2. 3. 4. 5.
то результат пустой вот не понятна немного как работает mssql с этим встречающимся null в подзапросе, может кто-то может объяснить двумя словами? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 15:33 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
QEOS Код: sql 1.
Это эквивалентно такой проверке: Код: sql 1.
Такая проверка для значений 1 и 5 возвращает TRUE. QEOSесли мы ставим not в условие Код: sql 1.
А это эквивалентно такой проверке: Код: sql 1.
Поскольку результат "ls.ls <> null" равен UNKNOWN, то проверка никогда не вернёт TRUE. Null Values ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 15:45 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
QEOS, http://msdn.microsoft.com/en-us/library/ms177682.aspx Any null values returned by subquery or expression that are compared to test_expression using IN or NOT IN return UNKNOWN. Using null values in together with IN or NOT IN can produce unexpected results. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 15:46 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
Shakillunexpected results Это не очень хорошее объяснение. Если понимать механизм, то results будут полностью expected. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 15:56 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
Гость333Shakillunexpected results Это не очень хорошее объяснение. Если понимать механизм, то results будут полностью expected. согласен. скорее всего, имелось в виду, что они не совсем очевидные для тех кто впервые сталкивается ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 16:03 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
Гость333 Код: sql 1.
Согласно сугубо личному опыту, новички гораздо лучше воспринимают Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 16:09 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
invmГость333 Код: sql 1.
Согласно сугубо личному опыту, новички гораздо лучше воспринимают Код: sql 1.
так вот такое описание как раз должно давать отбор.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:32 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
Почему-то никто не упомянул SET ANSI_NULLS ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:36 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
QEOSinvmпропущено... Согласно сугубо личному опыту, новички гораздо лучше воспринимают Код: sql 1.
так вот такое описание как раз должно давать отбор..Это почему же? Если ls.ls IN(1,5), то Код: sql 1. 2.
Если ls.ls NOT IN(1,5), то Код: sql 1. 2.
Таким образом ни разу TRUE не получается! А WHERE пропускает только TRUE Сходите по ссылке во втором посте ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:48 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
JovannyПочему-то никто не упомянул SET ANSI_NULLS ... наверно это не особо важный пункт.. в целом всем спасибо впринципе понятно как это работает.. это нечто типа правила-исключения. ну что жбудем знать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:49 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
iapQEOSпропущено... так вот такое описание как раз должно давать отбор..Это почему же? Если ls.ls IN(1,5), то Код: sql 1. 2.
Если ls.ls NOT IN(1,5), то Код: sql 1. 2.
Таким образом ни разу TRUE не получается! А WHERE пропускает только TRUE Сходите по ссылке во втором посте не понял что у вас за математика.. в приведенном вашем примере: Код: sql 1.
для 1 Код: sql 1.
для 2 Код: sql 1.
null в первой таблице нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:53 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
QEOSдля 1 Код: sql 1.
для 2 Код: sql 1.
Согласно приведенной статье, которую вы не хотите читать или прочли невнимательно: для 1 Код: sql 1.
для 2 Код: sql 1.
Для лучшего понимания вопроса -- http://www.sqlcmd.ru/null_or_not_null-part01.html] http://www.sqlcmd.ru/null_or_not_null-part01.html ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 11:14 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
JovannyПочему-то никто не упомянул SET ANSI_NULLS ... Ну давайте упомянем: авторIn a future version of SQL Server, ANSI_NULLS will always be ON and any applications that explicitly set the option to OFF will generate an error. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 11:15 |
|
помогите понять как работает запрос "in (..null..)"
|
|||
---|---|---|---|
#18+
QEOSне понял что у вас за математика.. Вы, наверное, привыкли к двухзначной (булевой) логике, оперирующей двумя значениями: Ложь и Истина. В SQL действует нечёткая трёхзначная логика (Ложь, Истина и Неизвестно). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 11:23 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1708404]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 195ms |
0 / 0 |