Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
авторА в sybase такого нету Честно говоря, не понял в чем подвох. Вроде как все есть, только по другому: вместо: Код: plaintext 1. будет: Код: plaintext 1. 2. 3. вместо: Код: plaintext 1. будет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Кстати вопрос по использованию множества полей в IN - как будет происходить обработка с NULL значениями ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 14:41 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
NULL - всегда NULL это значит что NULL<>NULL is TRUE NULL=NULL is FALSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:32 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
то есть если я Вас правильно понял, то для запроса: Код: plaintext 1. если tt1.id1 = null и tt2.id1 = null, а tt1.id2 = tt2.id2 , то такая запись в данном запросе не вернется ? Тогда в чем отличие такой конструкции например от INNER JOIN или EXISTS ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:39 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2gardenman: Сравнение NULL<>NULL в Oracle даст FALSE, как и любое сравнение с NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:46 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Сравнение NULL<>NULL в Oracle даст FALSE, как и любое сравнение с NULL А в аксесе Null<>Null даст False (что в предложении Where работает как False) Кстати о Null-ах. Объясните мне, непонятливому, почему в MS SQL необязательный уникальный индекс может содержать только одну запись с Null-ом? Как же быть с тем, что Null ничему не равен (в том числе и Null-у) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:58 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 ASCRUS Ты действительно прав. Это очень похожие вещи. Просто у меня перед глазами)) "хороший пример" проектирования, на Sybase когда имеется с десяток таблиц, и одна на другую завязана последовательно. У меня в результате - десятиэтажные запросы. Лень писать. Да и в ссылках запутаться можно. А первичные ключи сплошь сделаны только по одному полю, которое как правило IDENTITY. И все едва-едва ворочается... Я не могу понять что побудило человека строить модель именно так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:09 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Еще помню фокус по Sybase, что запрос select * from table_name where field_name is null может использовать построенный по TABLE_NAME.FIELD_NAME индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:13 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Лох прав.) Действительно - любое сравнение с NULL всегда FALSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:18 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
drop procedure c1 go create procedure c1 as begin declare @aa int, @bb int select @aa=null,@bb=null select case when @aa=@bb then 'Равно' else 'Облом' end end go c1 Результат: - Равно но, когда джойним через индекс две таблицы, то))) NULL<>NULL!!!))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:21 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Любая операция в Oracle (кроме конкатенации), в том числе и сравнение с NULL чего угодно даст NULL, а никак не FALSE, но при группировке NULL считаются равными. Учите матчасть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:27 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
авторКстати о Null-ах. Объясните мне, непонятливому, почему в MS SQL необязательный уникальный индекс может содержать только одну запись с Null-ом? Как же быть с тем, что Null ничему не равен (в том числе и Null-у) Хм. Ради интереса сейчас попробовал на ASA. Там работает. А я по привычке после MSSQL даже это и не догадался проверить. Бум знать, спасибо за мысль :) авторselect * from table_name where field_name is null может использовать построенный по TABLE_NAME.FIELD_NAME индекс. Угу, так и есть. gardenman Результат сравнения и обработки NULL зависит от реализации и настроек конкретной СУБД. Например в ASA Ваш пример всегда будет 'Облом', так как сравниваются 2 переменные. Если же выключить опцию ANSINULL, то в запросах, в разделах WHERE, ON и HAVING условия NULL = NULL станет истинным для сравнений значений полей с полями и переменными. Так что у Вас получается 2 переменные с NULL равны. А в ASA например, в CHECK поля или таблицы, условие NULL = 1 будет истинным :) Мда, одно дело различная функциональность СУБД, но различия даже в способах обработки NULL выглядят печально. На лицо явная смерть стандарта SQL и образование нескольких независимых направлений SQL и их клонов в продуктах: блокировочники TSQL: MSSQL,Sybase ASE, Sybase ASA WatcomSQL: Sybase ASA версионники PL/SQL: Oracle, PostgreSQL Interbase SQL: Interbase, Firebird ну наверное и т.д. (про Informix и DB2 ничего сказать не могу, к чему их отнести, так как ничего про них не слышал и не видел). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:56 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Насчет NULL<>NULL я опять попался, а все из-за того, что в коде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. блок ELSE будет выполнен. Хотя запрос select * from scott.emp where not (null <> null) не вернет ни одной записи. Столкнулся с MSSQL 2000. Объясните, почему: 1. 'a' like 'A' возвращает TRUE, это где-то в настройках прописывается регистронезависимое сравнение? В Oracle это будет FALSE. 2. Почему по крайней мере Query Analyzer нечуствителен к регистру написания вызываемых процедур? Если, допустим, есть процедура MyProc, то ее можно вызвать как MYPROC, myproc и т.д. Могут ли одновременно существовать процедуры с именами MyProc и myProc? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:15 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 Denis Popov 1. зависит от collation 2. зависит от настроект коннекта, см SET QUOTED_IDENTIFIER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:58 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Я писалА в аксесе Null<>Null даст False (что в предложении Where работает как False) Тьфу блин. Разумется Null <> Null даст Null, (что в Where эквивалентно False) Если б не замечание Глюка - так бы и не заметил. Так кто-нить может объяснить - в чем физический (математический, логический и т.п.) смысл того, что уникальном необязательном индексе не может быть два раза Null? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 20:02 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный >Так кто-нить может объяснить - в чем физический (математический, логический и т.п.) смысл того, что уникальном необязательном индексе не может быть два раза Null? Это понять нельзя, это нужно запомниить (C). В стандарте написано, что NULL уникальным индексом индексироваться не должен. Это логично. Но единственная СУБД, известная мне, позволяющая много строк с NULL в уникальном индексе, т.е соответствующая стандарту по этому пункту, это Sybase ASA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 00:52 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 буквацифра Гыы... Ты будешь смеяться, но еще и аксес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 01:22 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Хотя, конечно, извини В твоем понимании Аксес - не СУБД а двигатель от паровоза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 01:56 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Как ни странно, но Jet Access имеет полезные фичи, который отсутствуют в SQL серверах (например позволяет изменять данные, полученные на основании запросов, который в SQL серверах были бы однозначно как Static). IMHO Jet - один из лучших SQL файл-серверных движков. Да и как клиент он в принципе не плох. Очень правдо досадно, что MS-овцы так жестко навязали в ADP проектах ему в спутники MSSQL, у меня есть знакомые, которые программят на Access, и хотели бы его и дальше использовать в качестве средства построения клиентских приложений, но уже с БД на SQL сервере. С учетом того, что в качестве СУБД им хотелось бы видеть ASA, то варианты получаются не очень красивыми - все делать через присоединенки, поменять Access на что нибудь еще (тут ближе всего стоит PowerBuilder, но все равно учить не мало) или отказаться от расширенной функциональности ASA и работать на связке MSSQL + Access ADP. Я лично считаю, что MS поступила не честно в отношении Access, которому по идее при работе через ADO по барабану с какой СУБД работать, срезав круг его применения до разработки клиентских приложений только под MSSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 06:57 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Вспомнил про фичу Акесе, которой нет наверное нигде: группировочная функция First :) 2ASCRUS > учетом того, что в качестве СУБД им хотелось бы видеть ASA, то варианты получаются не очень красивыми - все делать через присоединенки Лучше тогда вообще не присоединять (линковать), а использовать запросу к серверу, да через DAO/ADO вызывать хранимые процедуры, используя полученные наборы в качестве источников спискво, форм, отчетов (с Акеса 2002) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 09:09 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
В Oracle уникальный индекс может построен по полю, содержащему сколько угодно NULL-значений. Они просто не включаются в индекс, уникальный или неуникальный. Побочное следствие: запрос с WHERE COLUM_NAME IS NULL использовать такой индекс не сможет. В Accesse по-моему есть возможность построения кросс-табличных запросов, т.е. "разворота" значений выбранных полей по горизонтали. ИМХО для аналитики может быть полезным, и больше нигде я такого не видел. Ответьте пожалуйста на м.б. дилетантский вопрос: COLLATE в MSSQL влияет на сопоставление строчных и прописных букв (т.е. указывает, что 'd' -строчная буква с соответствующей прописной 'D'), или влияет на отработку LIKE, т.е. на результат операции 'd' LIKE 'D'? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 10:33 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2Denis Popov В Oracle уникальный индекс может построен по полю, содержащему сколько угодно NULL-значений. Как уже сказали в Акесе можно, в сиквеле тоже можно, но только 1 значение Null В Accesse по-моему есть возможность построения кросс-табличных запросов, т.е. "разворота" значений выбранных полей по горизонтали. ИМХО для аналитики может быть полезным, и больше нигде я такого не видел. Угу. Есть такое - перекрестный запрос. В Юконе говорят тоже будет Ответьте пожалуйста на м.б. дилетантский вопрос: COLLATE в MSSQL влияет на сопоставление строчных и прописных букв (т.е. указывает, что 'd' -строчная буква с соответствующей прописной 'D'), или влияет на отработку LIKE, т.е. на результат операции 'd' LIKE 'D'? Хотя я и не большой спец в сиквеле, но думаю особо не на вру :) Да, влияет на сопоставление (и поэтому влияет и на отбор, в т.ч. и Like): Например, COLLATE Cyrillic_General_CI_AS - без учета регистра, COLLATE Cyrillic_General_CS_AS - c учетом регистра. Можно задавать для конкретного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 10:58 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2Denis Popov Можно задавать даже не для поля, а для операции поиска/сравнения. Например, поле "логин" у вас регистрозависимое. При авторизации человек должен набрать его правильно. Но администратор при поиске хочет искать его независимо от регистра. Тогда надо написать: WHERE [login] LIKE @login COLLATE Cyrillic_General_CI_AS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 11:28 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 Senin Viktor >в сиквеле тоже можно, но только 1 значение Null Одно значение везде можно. 2 Denis Popov >В Oracle уникальный индекс может построен по полю, содержащему сколько угодно NULL-значений. Они просто не включаются в индекс, уникальный или неуникальный. Побочное следствие: запрос с WHERE COLUM_NAME IS NULL использовать такой индекс не сможет. Так и должно быть по стандарту. Не знал. А вот в DB2 (7.x) этого сделать нельзя. >В Accesse по-моему есть возможность построения кросс-табличных запросов, т.е. "разворота" значений выбранных полей по горизонтали. ИМХО для аналитики может быть полезным, и больше нигде я такого не видел. В Sybase ASA это можно сделать с помощью функции list. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2004, 07:09 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Код: 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. и не только в 7-ке и 8-ке тоже... Что поделать - уникальный индекс всегда уникальный... И не только в DB2, но и в Sybase ASE 12.5.03 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2004, 09:54 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 gardenman >и не только в 7-ке и 8-ке тоже... Что поделать - уникальный индекс всегда уникальный... NULL - особое значение, он не должен индексироваться. Поработал как-то с DB2, осталось очень хорошее впечатление, лучше даже чем от оракла, но 2 вещи мягко говоря удивили: 30 дней в месяце (это уже исправили, странно только что продержалось аж до 7-й версии) и индексация NULL. >И не только в DB2, но и в Sybase ASE 12.5.03 Возможно, но я говорил об ASA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2004, 05:05 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=32392014&tid=1554197]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 365ms |

| 0 / 0 |
