sql資料類型轉換(cast() and convent())函數)

來源:互聯網
上載者:User
文章目錄
  • 資料類型轉換

 

資料類型轉換

在 Transact-SQL 中,可能有兩個層級的資料類型轉換:

  • 當一個對象的資料移動到另一個對象,或兩個對象之間的資料進行比較或組合時,資料可能不得不從一個對象的資料類型轉換為另一個對象的資料類型。

  • 當將來自 Transact-SQL 結果列、傳回碼或輸出參數的資料移動到程式變數中時,必須將這些資料從 Microsoft SQL Server 資料類型轉換成該變數的資料類型。

資料類型轉換有兩種:

  • 隱性轉換對於使用者是不可見的。 SQL Server 自動將資料從一種資料類型轉換成另一種資料類型。例如,如果一個
    smallint 變數和一個 int 變數相比較,這個 smallint 變數在比較前即被隱性轉換成
    int 變數。
  • 顯式轉換使用 CAST 或 CONVERT 函數。

CAST 和 CONVERT 函數將數值從一個資料類型(局部變數、列或其它運算式)轉換到另一個資料類型。例如,下面的 CAST 函數將數值 $157.27 轉換成字串 '$157.27':

CAST ( $157.27 AS VARCHAR(10) )

CAST 函數基於 SQL-92 標準並且優先於 CONVERT。

 轉換小數位元不同的資料類型時,結果值有時被截斷,有時被舍入。

被轉換的資料類型 轉換為的資料類型 行為

numeric

numeric

Round

numeric

int

截斷

numeric

money

Round

money

int

Round

money

numeric

Round

float

int

截斷

float

numeric

Round

float

datetime

Round

datetime

int

舍入

例如,以下轉換的結果為 10

SELECT CAST(10.6496 AS int)

在進行資料類型轉換時,若目標資料類型的小數位元小於來源資料類型的小數位元,則該值將被截斷。例如,以下轉換的結果為 $10.3497

SELECT CAST(10.3496847 AS money)

當非數字型 char、nchar、varchar 或 nvarchar 資料轉換為 int、float、numeric 或 decimal 時,SQL Server 將返回錯誤訊息。當Null 字元串 (" ") 轉換為 numeric 或 decimal 時,SQL Server 也返回錯誤。

 

當從一個 SQL Server 物件的資料類型向另一個轉換時,一些隱性和顯式資料類型轉換是不支援的。例如,nchar 數值根本就不能被轉換成
image 數值。nchar 只能顯式地轉換成 binary,隱性地轉換到
binary 是不支援的。nchar 可以顯式地或者隱性地轉換成 nvarchar

當處理 sql_variant 資料類型時,SQL Server 支援將具有其它資料類型的對象隱性轉換成
sql_variant
類型。然而,SQL Server 並不支援從 sql_variant 資料隱性地轉換到其它資料類型的對象。

在應用程式變數和 SQL Server 結果集列、傳回碼、參數或參數標記之間轉換時,所支援的資料類型轉換是由資料庫應用程式介面定義。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.