|
|
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
Как заставить ASE 15 корректно сравнивать null-значения с нормальными данными? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 09:46 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
Хм, у меня нормально проходит. Почитать про использование NULL в выражениях можно тут: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.blocks/html/blocks/blocks255.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 10:14 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
Можно так: IF isnull(@PER1,-1) <> isnull(@PER2,-1) -- если переменная числового типа и <> -1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 10:24 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
А их нельзя сравнивать напрямую. Если и какая либо версия сервера и пропускает такое, то это побочный эффект и он в следующей версии может измениться да и код станет неперносимым между разными серверами разных производителей. Как и советовали выше, переменные которые могут содержать null надо проверять только через isnull ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 10:50 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
Это не логично. Если одна переменная null, а другая не null, то они не равны абсолютно! Это ясно любому, но ASE не может такого сказать. Я не знаю где может быть null, а где нет. Значит мне надо абсолютно при любых сравнениях ставить конструкции isnull() получается такое излишнее нагромождение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 11:01 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
В SQL троичная лгика а не двоичная. Результат сравнения с null дает null, а не true или false. Вот здесь популярно описано: http://ru.wikipedia.org/wiki/NULL_(SQL) и вот здесь почитайте хорошую статью: http://www.citforum.ru/database/articles/nulls/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 12:10 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
Логика остается двоичной. Просто результат False для любой операции сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 12:18 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
userdubКак заставить ASE 15 корректно сравнивать null-значения с нормальными данными? Код: plaintext А разве так не отработает: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 13:01 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
golsaЛогика остается двоичной. Просто результат False для любой операции сравнения.Еще раз повторяем: В SQL логика троичная. Читать тут: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.blocks/html/blocks/blocks254.htm http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug94.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 18:47 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
userdub wrote: > Автор: userdub > Как заставить ASE 15 корректно сравнивать null-значения с нормальными > данными? > > IF @PER1 <> @PER2 > > - не срабатывает, когда одна из переменных null Так по стандарту и не должен срабатывать, null <> x != true при любых значениях X, даже если он null. null == null не есть true Другое дело, что ASE на это традиционно плевал, но под set ansinull on должно именно так и работать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2009, 14:01 |
|
||
|
Null не сравнивается...
|
|||
|---|---|---|---|
|
#18+
Кстати, давно хотел показать такую вещь: по документации: ASE 12.5 Parameters ansinull determines whether evaluation of NULL-valued operands in aggregate functions is compliant with the SQL92 standard. If you use set ansinull on, Adaptive Server generates a warning when an aggregate function eliminates a null-valued operand from the calculation. This parameter does not affect how Adaptive Server evaluates NULL values in equality (=) or inequality (!=) comparisons . For example, if you perform the following query on the titles table with set ansinull off (the default value): select max(total_sales) from titles Adaptive Server returns: ----------- 22246 However, if you perform the same query with set ansinull on, Adaptive Server returns the same value and an error message because the total_sales column contains NULL values: ----------- 22246 Warning - null value eliminated in set function This message indicates that some entries in total_sales contain NULL instead of a real amount, so you do not have complete data on total sales for all books in this table. However, of the available data, the value returned is the highest. Но в 15 уже другое: ASE 15 ansinull impacts on both aggregate and comparison behaviors. See “Aggregate behavior” for more information on aggregate and comparison behaviors. Хотя выполнение этого скрипта Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. на серверах двух этих версий даёт одинаковый результат (кроме конечно самой версии). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2009, 18:51 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=36058998&tid=2010991]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 277ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...