|
|
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
envА для каких целей Вы используете all в рамках своих задач?по идее, ему грамотнее было бы задействовать NOT EXISTS в данном случае. ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 17:52 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopПредставь, что ты пишешь функцию, котора принимает на вход * атомарное значение * массив * оператор Она возвращает false, если оператор возвращает false хотя бы для одного элемента массива, иначе true. Какова будет твоя логика если массив пустой?Представь, что ты пишешь функцию, которая возвращает длину строки в символах. Какова будет твоя логика, если строка пустая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:01 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевкак надо бы писать, на месте индусов из OracleВо время реализации этой логики Индия ещё была отсталой страной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:01 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
AmKaddbms_photoshopПредставь, что ты пишешь функцию, котора принимает на вход * атомарное значение * массив * оператор Она возвращает false, если оператор возвращает false хотя бы для одного элемента массива, иначе true. Какова будет твоя логика если массив пустой?Представь, что ты пишешь функцию, которая возвращает длину строки в символах. Какова будет твоя логика, если строка пустая? Неудачный пример, в нем нет множества. А речь именно о нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:05 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopЭто троллинг? Оператор сравнения атомарных значений (одно из которых null) и поэлементное сравнение с элементами множества (которое в конкретном случае пустое). Пока я вижу только твою ничем не подтвержденную интерпретацию. Все что ecть в документации это "Compares a value to every value in a list or returned by a query". Ну да ладно. Примем твою интерпретацию. X= ALL (subquery) сравнивает поэлементно. Ну а что тогда делает X= (subquery)? Чем это отличается от X= ALL (subquery) кроме как в первом случае возвращаемое множество ограничено одним элементом? SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:10 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
XMLerНеудачный пример, в нем нет множества. А речь именно о нем.AmKadпропущено... Представь, что ты пишешь функцию, которая возвращает длину строки в символах количество элементов коллекции (aka CARDINALIRY() ). Какова будет твоя логика, если строка коллекция пустая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:13 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
SY, Если посмотреть, как строится план, то оптимизатор смотрит по логике "не существует ни одного элемента в множестве, значение которого не совпадает с указанным элементом". Т.е. для такого запроса -filter : not exists (... where null is not null) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:15 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
Я думаю все сводится к тому что ALL/ANY/SOME попaли в Oracle через жeлание Oracle соответствовать SQL стандартам и Oracle с нетрадиционной ориентацией на NULL пришлось приспосабливаться. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:17 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
SYdbms_photoshopЭто троллинг? Оператор сравнения атомарных значений (одно из которых null) и поэлементное сравнение с элементами множества (которое в конкретном случае пустое). Пока я вижу только твою ничем не подтвержденную интерпретацию. Все что ecть в документации это "Compares a value to every value in a list or returned by a query". Ну да ладно. Примем твою интерпретацию. X= ALL (subquery) сравнивает поэлементно. Ну а что тогда делает X= (subquery)? Чем это отличается от X= ALL (subquery) кроме как в первом случае возвращаемое множество ограничено одним элементом? SY. Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:17 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
AmKaddbms_photoshopПредставь, что ты пишешь функцию, котора принимает на вход * атомарное значение * массив * оператор Она возвращает false, если оператор возвращает false хотя бы для одного элемента массива, иначе true. Какова будет твоя логика если массив пустой?Представь, что ты пишешь функцию, которая возвращает длину строки в символах. Какова будет твоя логика, если строка пустая?Если мы затронули пустые строки, то воспользуясь случаем замечу, что Оракловая реализация отстой. Вот результат для Impala и он представляется мне абсолютно логичным. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:24 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopпредставляется мне абсолютно логичнымнеееее а как же прививание с пеленок идеи тождественности пустой строки и NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:34 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
--Eugene--Представь, что ты пишешь функцию, которая возвращает длину строки в символах количество элементов коллекции (aka CARDINALIRY() ). Какова будет твоя логика, если строка коллекция пустая?[/quot] опять мимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:34 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
--Eugene--Представь, что ты пишешь функцию, которая возвращает длину строки в символах количество элементов коллекции (aka CARDINALIRY() ). Какова будет твоя логика, если строка коллекция пустая?Согласно доке ожидал null, но не тут-то было. Видимо я не знаю, что такое empty table. http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions022.htm#SQLRF06305 If the nested table is empty, or is a null collection, then CARDINALITY returns NULL Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:35 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopЕсли мы затронули пустые строки, то воспользуясь случаем замечу, что Оракловая реализация отстой.Здесь я могу с тобой согласиться. Но поведение = all при no rows returned я считаю нелогичным. Можете кидать в меня камнями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:38 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
AmKad, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Так что не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:42 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop Код: plsql 1. Это empty table? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:47 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopТак что не устраивает?расхождение с докой:докаIf the nested table is empty , or is a null collection, then CARDINALITY returns NULL не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:47 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
AmKadЭто empty table? IS EMPTY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:49 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
--Eugene-- IS EMPTY Ну вот: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 18:55 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
--Eugene--dbms_photoshopТак что не устраивает?расхождение с докой:докаIf the nested table is empty , or is a null collection, then CARDINALITY returns NULL не?Да, тут по видимому две проблемы. Во первых расхождение с докой, а во-вторых криво работает. Логично, если EMPTY - 0, null collection - null. Но для первой коллекции я ожидал 1 в результате. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 19:00 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
--Eugene--, Подлец ты все-таки, увел обсуждение от all к cardinality. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 19:03 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, И почему-же у ANY изначальное FALSE а у ALL изначальное TRUE? Круг замкнулся. Не говоря о том что это уже implementation так-как для ANY прoще искать одно соответствие (и посему установить изначальное в FALSE) а для ALL одно не соответствие (и посему установить изначальное в TRUE). Вопрос в том что есть результат сравнения скалярa с элементом пустого множества (TRUE/FALSE/UNKNOWN)? Согласно SQL in Nutshell, 3rd edition by Kevin Kline это заложено в SQL стандарт: SQL2003 Syntax SELECT ... WHERE expression comparison {ALL | ANY | SOME} ( subquery ) Keywords WHERE expression Tests a scalar expression (such as a column) against every value in the subquery for ALL, and against every value until a match is found for ANY and SOME. All rows must match the expression to return a Boolean TRUE value for the ALL operator, while one or more rows must match the expression to return a Boolean TRUE value for the ANY and SOME operators. comparison Compares the expression to the subquery. The comparison must be a standard comparison operator like =, <>, !=, >, >=, <, or <=. Rules at a Glance The ALL operator returns a Boolean TRUE value when one of two things happens: either the subquery returns an empty set (i.e., no records), or every record in the set meets the comparison. ALL returns FALSE when any record in the set does not match the value comparison. The ANY and SOME operators return a Boolean TRUE when at least one record in the subquery matches the comparison operation, and FALSE when no record matches the comparison operation (or when a subquery returns an empty result set). If even one return value of the subquery is NULL, the operation evaluates as NULL, not as TRUE. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 19:22 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopдля первой коллекции я ожидал 1 в результате.что-то ниже спины подсказывает мне, что CARDINALITY не считает NULL.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 19:23 |
|
||
|
почему так ?
|
|||
|---|---|---|---|
|
#18+
ElicВо время реализации этой логики Индия ещё была отсталой страной. Главное, что логика была и есть по сей день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2017, 19:31 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39520661&tid=1885234]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 473ms |

| 0 / 0 |
