Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Неявное преобразование типов
Неявное преобразование типов
Поведение диалектов 1 и 3 различно при неявном преобразовании типов. Это может стать проблемой, если вам нужно преобразовать существующую базу данных в диалект 3 и изменить использующие их приложения.
* В диалекте 1 для некоторых выражений Firebird выполняет автоматическое преобразование данных в эквивалентные типы данных (неявное преобразование типов). Здесь также может быть использована функция CAST(), хотя в большинстве случаев она не нужна.
* В диалекте 3 в условиях поиска требуется функция CAST() для явной трансляции одного типа данных в другой для операций сравнения.
Например, сравнение столбца типа DATE или TIMESTAMP с '12/31/2003' в диалекте 1 приводит к неявному преобразованию строкового литерала '12/31/2003' в тип данных DATE.
SELECT * FROM TABLE_A
WHERE START_DATE < '12/31/2003';
В диалекте 3 требуется явное преобразование:
SELECT * FROM TABLE_A
WHERE START_DATE < CAST ('12/31/2003' AS DATE);
В выражениях, где смешиваются целые данные и числовые строки, в диалекте 1 строки неявно преобразуются в целое, если это возможно. В следующей операции:
3 + '1'
диалект 1 автоматически преобразует символ "1" в SMALLINT, в то время как диалект 3 вернет ошибку. Он требует явного преобразования типов:
3 + CAST('1' AS SMALLINT)
Оба диалекта вернут ошибку в следующем операторе, потому что Firebird не может преобразовать символ "а" в целое:
3 + 'а'
- Явное преобразование типов: CAST()
- Преобразование и приведение типов
- Неявное преобразование типов в литералах даты и времени
- Неявное полномочие
- Преобразование XML в реляционную базу данных
- Преобразование строки в целое: stoi( )
- Использование типов содержимого и столбцов
- 5.3 Классификация типов резервного копирования
- 2.7 Преобразования типов
- Описание типов модулей оперативной памяти
- Объекты без прототипов
- 7. Лекция: Преобразование типов