Основы языка Transact-SQL. Основные элементы Transact-SQL. Типы данных MS SQL Server. Выражения Transact-SQL, страница 4

  • При создании таблиц важно правильно выбрать типы данных для каждого столбца. При выборе типа данных возникают 2 вопроса:
    1. Подходит ли этот тип данных для определенных данных?
    2. Какой тип данных использовать – с фиксированной или переменной длиной?

57

  • Данные, которые будут вводиться в столбец, должны соответствовать типу данных столбца.
  • Поэтому,
    • с одной стороны, тип данных должен охватывать диапазон значений, которые могли бы храниться в столбце для всего срока эксплуатации приложения;
    • с другой стороны, требуется ограничить ненужный расход места на диске.

Если все значения данных столбца будут иметь приблизительно одинаковые размеры, то лучше использовать тип данных с фиксированной длиной, так как обработка данных, имеющих типы переменной длины, вызывает повышенную нагрузку на процессор.

59

  • Типы данных с переменной длиной (varchar, nvarchar, varbinary, text, ntext, image) рекомендуется применять, если:
  • предполагаются значительные различия в длине данных, хранимых в столбце;
  • данные столбца обновляются редко.
  • Применение типов данных с переменной длиной может привести к значительной экономии места для хранения данных.

Например, если задан тип данных с фиксированной длиной, достаточной для хранения значений в столбце с наибольшей возможной длиной, то для всех значений, занимающих меньше места, истратится столько же места, как и для этого самого объемного значения. В результате возникает ненужный расход места на диске: в большинстве строк будет использовано меньше места, а все неиспользуемое место станет потерянным. При использовании типа данных с переменной длиной короткие значения будут расходовать лишь то место, которое им нужно.

61

3.10. Преобразование типов данных

Часто необходимо преобразовать значения одного типа данных в значение другого типа, например, требуется конвертировать числа в символьные данные или наоборот. Для преобразования значений числовых типов данных в символьные используется специальная функция STR.

62

Для выполнения других преобразований имеются универсальные функции CONVERT, CAST, с помощью которых можно преобразовывать значения одного типа в значения любого другого типа (если такое преобразование возможно). Эти функции предлагают примерно одинаковые возможности и могут быть взаимозаменяемы.

Синтаксис этих функций: CAST(выражение AS тип_данных) CONVERT(тип_данных [(длина)], выражение [, стиль])

Аргумент выражение задает величину, которую нужно конвертировать. Тип, в который конвертируются данные, определяется аргументом тип_данных.

64

Для функции CONVERT имеются также необязательные аргументы: длина – задает размерность типа данных (если для целевого типа данных существует понятие размерности); стиль - управляет стилем представления значений типов данных дата/время, денежный или нецелочисленный при конвертировании их в символьные строки с типами данных nchar, nvarchar, char, varchar.

Пример использования функции CAST - преобразование числового значения $157.27 в символьную строку ''$157.27''

(вместо разделителя-запятой появилась точка)

66

  • Поддерживаются два метода преобразования типов данных:
  • Неявное преобразование
  • Такие преобразования «невидимы» для пользователей. Сервер автоматически конвертирует данные от одного типа данных к другому. Например, если значение smallint сравнивается со значением int, то до сравнения smallint неявно преобразуется к int.

67

  • Явное преобразование
  • Такие преобразования выполняются пользователями с помощью функций CONVERT, CAST.

Некоторые неявные и явные преобразования от одного типа к другому не поддерживаются. Например, значение nchar не может быть преобразовано к значению image.

68

Тип данных nchar может быть преобразован только к типу данных binary, используя явное преобразование с помощью функций CONVERT, CAST. Значение nchar может быть преобразовано к типу данных nvarchar как явно, так и неявно.

4. ВЫРАЖЕНИЯ

Выражения – комбинации идентификаторов, функций, знаков логических и арифметических операций, констант и других объектов. Выражения используются в качестве аргумента в командах, хранимых процедурах, запросах. Выражение состоит из операндов – собственно данных – и операторов – знаков операций, производимых над операндами.