Неявное преобразование типов
Неявное преобразование типов
Подскажите пожалуйста как работает преобразование типов или от чего зависит?
К примеру я одну таблицу по полю varchar связываю с другой по полю integer.
Оно integer приведет к varchar? Или наоборот? Или это зависит от того к какой таблице первой обратится?
К примеру я одну таблицу по полю varchar связываю с другой по полю integer.
Оно integer приведет к varchar? Или наоборот? Или это зависит от того к какой таблице первой обратится?
Re: Неявное преобразование типов
строку приведет к целому. А вообще, не надо так проектировать базу.
Re: Неявное преобразование типов
Наверное сразу нужно было привести примеры:
Версия ФБ 1.5 Классик под Линукс РХ.
Первый запрос у меня возврашает 1, а второй null.
Конечно, если второй запрос написать вот так, то он тоже вернет значение:
БД, которая взамодейтсвует с другими системами на уровне файлового обмена, а это означает что в файле может прийти все что угодно, так что проектирование здесь не особо поможет.
Код: Выделить всё
create table t_varchar(f_string varchar(10));
create table t_integer(f_integer integer);
insert into t_varchar values('-00');
insert into t_integer values('0');
select 1 from t_varchar, t_integer
where t_varchar.f_string = t_integer.f_integer
PLAN MERGE (SORT (T_INTEGER NATURAL),SORT (T_VARCHAR NATURAL));
select 1 from t_varchar, t_integer
where t_varchar.f_string = t_integer.f_integer
PLAN JOIN (T_VARCHAR NATURAL,T_INTEGER INDEX (IND_T_INT))
Первый запрос у меня возврашает 1, а второй null.
Конечно, если второй запрос написать вот так, то он тоже вернет значение:
Код: Выделить всё
select 1 from t_varchar, t_integer
where cast(t_varchar.f_string as integer) = t_integer.f_integer
PLAN JOIN (T_VARCHAR NATURAL,T_INTEGER INDEX (IND_T_INT))
Re: Неявное преобразование типов
выкинь ФБ 1.5 и возьми либо 2.1 либо 2.5. Там нет таких проблем.
Re: Неявное преобразование типов
Думаю это было преположение, так как на практике на версии 2.5 ситуация аналогичная
Re: Неявное преобразование типов
2.5.1 выдает правильно, я только что перепроверил
Re: Неявное преобразование типов
Да на 2.5.1 второй запрос будет возвращать значение.
Осталось определиться это лучше или хуже, так как сейчас такие ошибочные записи просто пропускает и не обрабатывает, а в 2.5.1 будет падать с ошибкой преобразования, если там будут не только цифры.
Осталось определиться это лучше или хуже, так как сейчас такие ошибочные записи просто пропускает и не обрабатывает, а в 2.5.1 будет падать с ошибкой преобразования, если там будут не только цифры.
Re: Неявное преобразование типов
как минимум, это правильно А лучше или хуже для вашего приложения - решать вам.