Неявне перетворення

Функції для обробки даних у SQL Server

Ana Voicu

Data Engineer

Порівняння даних

Пам'ятайте: щоб порівнювати два значення, вони мають бути одного типу.

Інакше:

  • SQL Server перетворює типи самостійно (IMPLICIT)
  • Розробник явно перетворює дані (EXPLICIT)
Функції для обробки даних у 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...