Явные преобразования типов или доменов и оператор CAST
Неявные преобразования типов не всегда удобны, недостаточно гибки и иногда могут вызывать ошибки. Поэтому, как показывает предыдущий подраздел, число допустимых неявных преобразований типов в SQL весьма ограничено. Однако в SQL существует специальный оператор CAST, с помощью которого можно явно преобразовывать типы или домены в более широких пределах допускаемых преобразований. Конструкция имеет следующий синтаксис: CAST ({scalar-expression | NULL } AS {data_type | domain_name})Оператор преобразует значение заданного скалярного выражения к указанному типу или к базовому типу указанного домена. Результатом применения оператора CAST к неопределенному значению является неопределенное значение. Для значений, отличных от неопределенных, в стандарте приводятся подробные правила выполнения преобразований, которые интуитивно понятны. Поясним действие оператора CAST в наиболее важных случаях. Примем следующие обозначения типов данных: EN – точные числовые типы (Exact Numeric) AN – приблизительные числовые типы (Approximate Numeric) C – типы символьных строк (Character) FC – типы символьных строк постоянной длины (Fixed-length Character) VC – типы символьных строк переменной длины (Variable-length Character) B – типы битовых строк (Bit String) FB – типы битовых строк постоянной длины (Fixed-length Bit String) VB – типы битовых строк переменной длины (Variable-length Bit String) D – тип Date T – типы Time TS – типы Timestamp YM – типы Interval Year-Month DT – типы Interval Day-Time Пусть TD – это тип данных, к которому производится преобразование, а SD – тип данных операнда. Тогда допустимы следующие комбинации («да» означает безусловную допустимость, «нет» – безусловную недопустимость и «?» – допустимость с оговорками).
По поводу ячеек таблицы, содержащих знак вопроса, необходимо сделать несколько оговорок:
Заключение В этой лекции мы начали рассматривать средства языка SQL, позволяющие определять и динамически изменять схему базы данных. Наиболее важным для общего понимания языка является раздел 15.2. Типы данных SQL – система типов языка SQL (и любой SQL-ориентированной базы данных). В последних стандартах языка SQL поддерживаются:
Нельзя с уверенностью сказать, что система типов языка SQL настолько полна, что может удовлетворить любые потребности, но можно отметить, что в этой системе типов отсутствует единый логический подход и имеется избыточность. Возможно, это станет понятнее после обсуждения в конце курса средств объектно-реляционных расширений языка SQL. Как должно быть ясно из этой лекции, механизм доменов в SQL играет вспомогательную роль. Это не совсем те (может быть, и совсем не те) домены, поддержка которых предполагается реляционной моделью. Фактически определение домена обеспечивает спецификацию ограничений и значений по умолчанию, выносимых за пределы определения столбца. В комитете по стандартизации SQL обсуждается идея полного отказа от поддержки механизма доменов и замены его на соответствующим образом адаптированный механизм индивидуальных типов (см. последнюю лекцию курса). ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|