|
Условие в запросе
|
|||
---|---|---|---|
#18+
капец полныйно ответьте плиз, откуда такой огород, почему не подходит Код: sql 1.
Потому что написанные выше условия BETWEEN эквивалентны Код: sql 1.
а не тем, что Вы написали. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 14:34 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
капец полныйПрогер_самоучка, тип полей тут вообще ни при чем, любое из этох двух вызовет ту же ошибку: Код: sql 1. 2.
Я понимаю, иначе вопроса не было бы) капец полныйно ответьте плиз, откуда такой огород, почему не подходит Код: sql 1.
Чуть выше описано почему сделано именно так. Если было так просто, я бы не стал усложнять себе жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 14:35 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
извиняюсь, да, я "не в теме", т.к. там перерыв между постами и начало осталось непрочтенным. могу только предположить, что у него изменилось поведение по приведению типов вот такое Код: sql 1. 2. 3.
показывает, что на этапе nullif(-1,-1), тип выражения не определен. ну и раскомментарив последнюю строку, имеем ту же ошибку. т.е. он от типа NULL перешел почему-то к SMALLINT, а 2000-ый наверное честно оценивал второй аргумент и понимал, что все приводится к INT ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 14:46 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
=)8)а тип параметра какой? Скорее всего, что-то вроде этого: Код: sql 1. 2. 3. 4. 5. 6.
исправьте тип на int - ошибка уйдет @code- это значения из поля формы. Они берутся из таблиц и все имеют тип int. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 14:47 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
тем не менее, насильное указание типа помогает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 14:51 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
При выполнении запроса SQL смотрит не на тип поля данных, а определяет тип по результату операции, переведите результат в формат int и будет вам счастье Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:00 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
ну, кажись да, если ему тип насильно не указать, он считает, что SMALLINT Код: sql 1. 2. 3.
----------------------- int NULL smallint ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:05 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
капец полныйну, кажись да, если ему тип насильно не указать, он считает, что SMALLINT Код: sql 1. 2. 3.
----------------------- int NULL smallintЭто потому, что для -1 минимальный по размеру целый тип - SMALLINT. Если не ошибаюсь, такое поведение (и много других сюрпризов с типами) началось с SQL2005. И, кстати, в своё время здесь это обсуждалось неоднократно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:09 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
А вот почему -2147483648 приводится к типу SMALLINT, - вот что непонятно. Ибо логично было бы и этот литерал преобразовать к минимальному для него типу INT, а потом оба аргумента к типу с бОольшим приоритетом, то есть, INT ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:13 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
Владимир МеньшиковПри выполнении запроса SQL смотрит не на тип поля данных, а определяет тип по результату операции, переведите результат в формат int и будет вам счастье Код: sql 1.
Пытался сначала это сделать в программе функцией CInt (VBA). Но в итоге сервер снова приводил к smallint. Воспользовался вашим советом. Большое спасибо. З.Ы. Остальным участникам тоже спасибо за активное участие и помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:22 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
iapА вот почему -2147483648 приводится к типу SMALLINT, - вот что непонятно. Ибо логично было бы и этот литерал преобразовать к минимальному для него типу INT, а потом оба аргумента к типу с бОольшим приоритетом, то есть, INT потому что ISNULL так работает - пытается вернуть результат с типом первого аргумента Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:23 |
|
Условие в запросе
|
|||
---|---|---|---|
#18+
ShakilliapА вот почему -2147483648 приводится к типу SMALLINT, - вот что непонятно. Ибо логично было бы и этот литерал преобразовать к минимальному для него типу INT, а потом оба аргумента к типу с бОольшим приоритетом, то есть, INT потому что ISNULL так работает - пытается вернуть результат с типом первого аргумента Код: sql 1.
Да. Запамятовал что-то. Причём сейчас ясно вспомнил, как мы когда-то это обсуждали. Кстати, COALESCE ведёт себя совершенно иначе - приводит все свои аргументы к типу с максимальным приоритетом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 15:27 |
|
|
start [/forum/topic.php?fid=46&startmsg=38334172&tid=1706110]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
182ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 236ms |
total: | 527ms |
0 / 0 |