powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / if() в mysql
11 сообщений из 11, страница 1 из 1
if() в mysql
    #37288454
vitkvit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из фокса на mysql выполняю select с if():

select if(id<1000, 1100+id, id) as id
from tbl

Ожидаю получить поле цифрового типа, т.к. tbl.id - цифровое, но получаю символьное.
Можете подсказать в чем дело?
...
Рейтинг: 0 / 0
if() в mysql
    #37288617
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkvit,
а так:

Код: plaintext
1.
select cast(iif(id< 1000 ,  1100 +id, id) as integer) as id from tbl

может мускул тебе bigint возвращает без cast.
...
Рейтинг: 0 / 0
if() в mysql
    #37288634
vitkvit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WORKSNS,

с cast-ом тоже пробовал, не помогает. Пробовал вставлять abs() - результат тот же.

Код: plaintext
select if(id< 100 , id, id) as id from tbl
работает, а
Код: plaintext
select if(id< 100 , id+ 100 , id) as id from tbl
уже не хочет
...
Рейтинг: 0 / 0
if() в mysql
    #37288685
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkvit,

IIF()
...
Рейтинг: 0 / 0
if() в mysql
    #37288724
vitkvit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igorbik

IIF()
ответ не правильный
...
Рейтинг: 0 / 0
if() в mysql
    #37288818
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkvitWORKSNS,

с cast-ом тоже пробовал, не помогает. Пробовал вставлять abs() - результат тот же.

Код: plaintext
select if(id< 100 , id, id) as id from tbl
работает, а
Код: plaintext
select if(id< 100 , id+ 100 , id) as id from tbl
уже не хочет
а у id поля какой тип данных?
...
Рейтинг: 0 / 0
if() в mysql
    #37288846
vitkvit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WORKSNS,

int, естественно
...
Рейтинг: 0 / 0
if() в mysql
    #37288866
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkvit,
похоже заложено в стандарте SQL
Сейчас попробовал на FB

Код: plaintext
select cast( 1  as smallint) + cast( 1  as smallint)  from rdb$database
- результат BIGINT


Код: plaintext
select cast( cast( 1  as smallint) + cast( 1  as smallint) as smallint)  from rdb$database
- результат Smallint

Не понятно почему MySql при явном cast всего выражения в итоге отдает bigint. Может какая-то особенность версии сервера/драйвера. C MySQL практически не общался к сожалению.
...
Рейтинг: 0 / 0
if() в mysql
    #37288893
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkvit, единственное, чем это можно побороть - использовать курсорадаптеры (с прописанной схемой курсора, естественно), по кр. мере, я иного способа не нашёл.
...
Рейтинг: 0 / 0
if() в mysql
    #37288900
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
6.3.3 Числовые функции
6.3.3.1 Арифметические операции

В MySQL можно применять обычные арифметические операторы. Следует иметь в виду, что если оба аргумента являются целыми числами, то при использовании операторов `-', `+' и `*' результат вычисляется с точностью BIGINT (64 бита). Если один из аргументов - беззнаковое целое число, а второй аргумент - также целое число, то результат будет беззнаковым целым числом. See section 6.3.5 Функции приведения типов.
...
Рейтинг: 0 / 0
if() в mysql
    #37289194
vitkvit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Спасибо за подсказку!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / if() в mysql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]