隱含轉換

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...