![]() |
![]() |
![]() |
Преобразование типов В PostgreSQL поддерживаются три отдельных варианта синтаксиса преобразования (приведения) типов, то есть механизма приведения данных от одного типа к другому. В команде SQL преобразование типов позволяет явно задать тип создаваемой константы (вместо его косвенного определения по правилам языка). В общем случае приведение строковой константы к другому типу может выполняться любым из трех способов: тип 'значение' 'значение': -.тип CAST ('значение' AS тип) Числовые константы преобразуются в символьную строку следующими способами: значение: : тип CAST (значение AS тип) Здесь значение представляет константу, тип которой требуется изменить, а тип — новый тип этой константы. ПРИМЕЧАНИЕ Помните, что тип money считается устаревшим, что несколко затрудняет его использование в преобразованиях. Преобразование к другому типу данных не ограничивается одними константами. Поля набора данных, возвращаемого запросом SQL, также могут преобразовываться к другому типу, при этом используются следующие формы синтаксиса: идентификатор:: тип CAST (идентификатор AS тип) Следует учесть, что не каждый тип данных может быть приведен к любому другому типу. Например, не существует осмысленного преобразования символьной строки abed в двоичную последовательность типа bit. Недопустимые попытки преобразования приводят к ошибкам PostgreSQL. Чаще всего встречаются преобразования символьных строк, типов даты/времени или числовых типов к типу text, а также символьных строк в числа. Кроме синтаксических форм преобразования типа существуют некоторые функции, позволяющие добиться практически того же результата. Имена этих функций часто совпадают с именами итоговых типов (например, text()), хотя существуют и узкоспециализированные варианты (например, bitfromint4()). В листинге 3.30 приведен пример использования функции text О для преобразования целого числа 1000 в строку типа text, содержащую символы «1000». Листинг 3.30. Использование функции преобразования типа booktown=# SELECT text(1000) booktown-# AS explicitjtext; explicit_text |
![]() |
![]() |
![]() |