Неявное преобразование

Функции для работы с данными в SQL Server

Ana Voicu

Data Engineer

Сравнение данных

Важно помнить: для сравнения двух значений они должны быть одного типа.

В противном случае:

  • SQL Server преобразует один тип в другой (НЕЯВНО)
  • Разработчик явно преобразует данные (ЯВНО)
Функции для работы с данными в SQL Server

Примеры возможных преобразований

SELECT 
    company
    bean_type,
    cocoa_percent
FROM ratings;
Функции для работы с данными в SQL Server

Примеры возможных преобразований

SELECT 
    company
    bean_type,
    cocoa_percent
FROM ratings
WHERE cocoa_percent > 0.5; 

| company | bean_type  | cocoa_percent |
|---------|------------|---------------|
| Amedei  | Blend      | 0.7000        |
| Bonnat  | Trinitario | 0.7500        |
| ...     | ...        | ...           |
Функции для работы с данными в SQL Server

Примеры возможных преобразований

SELECT 
    company
    bean_type,
    cocoa_percent
FROM ratings
WHERE cocoa_percent > -2; 

| company | bean_type  | cocoa_percent |
|---------|------------|---------------|
| Amedei  | Blend      | 0.7000        |
| Bonnat  | Trinitario | 0.7500        |
| ...     | ...        | ...           |
Функции для работы с данными в SQL Server

Примеры возможных преобразований

SELECT 
    company
    bean_type,
    cocoa_percent
FROM ratings
WHERE cocoa_percent > GETDATE();

| company | bean_type  | cocoa_percent |
|---------|------------|---------------|
| ...     | ...        | ...           |
Функции для работы с данными в SQL Server

Примеры возможных преобразований

SELECT 
    company
    bean_type,
    cocoa_percent
FROM ratings
WHERE cocoa_percent > 'A';


| result                                         | 
|------------------------------------------------|
| Error converting data type varchar to numeric. |
Функции для работы с данными в SQL Server

Примеры возможных преобразований

SELECT 
    company
    bean_type,
    cocoa_percent
FROM ratings
WHERE cocoa_percent > '0.5';
| company | bean_type  | cocoa_percent |
|---------|------------|---------------|
| Amedei  | Blend      | 0.7000        |
| Bonnat  | Trinitario | 0.7500        |
| ...     | ...        | ...           |
Функции для работы с данными в SQL Server

Приоритет типов данных

Приоритет типов данных

Функции для работы с данными в SQL Server

Приоритет типов данных

Функции для работы с данными в SQL Server

Неявное преобразование между типами данных

Таблица неявных преобразований

Функции для работы с данными в SQL Server

Влияние неявного преобразования на производительность

  • Неявное преобразование выполняется для каждой строки запроса
  • Грамотное проектирование схемы базы данных позволяет избежать неявных преобразований.
Функции для работы с данными в SQL Server

Давайте потренируемся!

Функции для работы с данными в SQL Server

Preparing Video For Download...