SQL - CONVERT() 函式



SQL 的CONVERT()函式將表示式從一種資料型別轉換為另一種資料型別。如果轉換成功,則函式返回轉換後的值;否則,會產生錯誤。

除了 style 選項外,CONVERT() 函式等效於 CAST() 函式。雖然 CAST() 是 ANSI SQL 方法的一部分,這些方法在許多其他資料庫中都可以訪問,但 CONVERT() 是 SQL Server 獨有的,而不是。

語法

以下是 SQL CONVERT() 函式的語法:

CONVERT(data_type(length), expression, style) 

引數

此函式僅接受四個引數。下面描述了相同的內容:

  • data_type - 要轉換的有效表示式。

  • length - 它是結果資料型別的長度,可選。

  • expression - 我們要將表示式轉換為的資料型別。

  • style - 用於結果的格式,可選。

style 值可以是以下任何一個值,讓我們逐一看看

轉換的日期和時間樣式:

STYLE STANDARD 結果
100 datetime 和 smalldatetime mon dd yyyy hh:miAM(或 PM)
101 US mm/dd/yyyy
102 ANSI yyy.mm.dd
103 英國/法國 dd/mm/yyyy
104 德國 dd.mm.yyyy
105 -- dd mon yyyy
106 -- Mon dd, yyyy
107 -- Mon dd, yyyy
108 -- hh:mi:ss
109 預設 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
110 USA mm-dd-yyyy
111 日本 yyyy/mm/dd
112 ISO yyyymmdd
113 歐洲預設 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24 小時)
114 -- hh:mi:ss:mmm(24 小時)
120 ODBC 規範 yyyy-mm-dd hh:mi:ss(24 小時)
121 ODBC 規範(帶毫秒)時間、日期、datetime2 和 datetimeoffset 的預設值 yyyy-mm-dd hh:mi:ss.mmm(24 小時)
126 ISO8601 yyyy-mm-ddThh:mi:ss.mmm(無空格)
127 ISO8601 yyyy-MM-ddThh:mm:ss.fffZ(無空格)

轉換的浮點數和實數樣式:

STYLE 結果
0 最多 6 位數字。在適當的情況下使用科學計數法。
1 8 位數字。始終使用科學計數法。
2 16 位數字。始終使用科學計數法。

轉換的貨幣和小貨幣樣式:

STYLE 結果
0 無逗號,2 位小數。例如:28000.54。
1 帶逗號,2 位小數。例如:24,222.63。
2 無逗號,4 位小數。例如:12345.6789。
126 轉換為 char(n) 或 varchar(n) 時等效於 2。

示例

讓我們嘗試使用以下查詢將十進位制轉換為整數:

SELECT CONVERT(int, 123.34) AS Result;

輸出

當我們執行上述查詢時,獲得的輸出如下:

+--------------------------+
|                   Result |
+--------------------------+
|                      123 |
+--------------------------+

示例

讓我們使用以下查詢將表示式轉換為 varchar:

SELECT CONVERT(varchar, 12344.34) AS varchar;

輸出

執行上述查詢後,將顯示以下輸出:

+--------------------------+
|                  varchar |
+--------------------------+
|                12344.34  |
+--------------------------+

示例

在以下示例中,我們將使用以下查詢將表示式轉換為 datetime:

SELECT CONVERT(datetime, '2023-02-23') AS datetime;

輸出

上面查詢的輸出如下所示:

+--------------------------+
|                 datetime |
+--------------------------+
|  2023-02-23 00:00:00.000 |
+--------------------------+ 

示例

檢視以下示例,我們將使用以下查詢將浮點數轉換為整數:

DECLARE @FLOAT AS Float
SET @FLOAT = 12344.567 
SELECT CONVERT(int, @FLOAT) AS ConvertedResult;

輸出

如果我們編譯並執行上述查詢,則會產生以下結果:

+------------------------------------+
|                     ConvertedResult|
+------------------------------------+
|                              12344 |
+------------------------------------+

示例

讓我們看看另一種情況,我們將使用以下查詢將浮點值更改為 varchar:

DECLARE @FLOAT AS Float
SET @FLOAT = 1235.5687
SELECT CONVERT(varchar, @FLOAT) AS ConvertedResult;

輸出

執行上述查詢後,它將生成如下所示的輸出:

+------------------------------------+
|                     ConvertedResult|
+------------------------------------+
|                            1235.57 |
+------------------------------------+

示例

讓我們考慮另一個示例,我們將透過執行以下查詢將貨幣轉換為 varchar:

DECLARE @MONEY AS MONEY=$1234.56
SELECT CONVERT(Varchar,@MONEY,0) AS Style_0, 
CONVERT(Varchar,@MONEY,1) AS Style_1; 

輸出

查詢執行後,它將生成如下所示的輸出:

+-----------------------------------+-------------------------------------+
|                  Style_0          |                    Style_1          |
+-----------------------------------+-------------------------------------+
|                  1234.56          |                    1,234.56         |
+-----------------------------------+-------------------------------------+

示例

在以下示例中,我們將使用 CONVERT() 函式以及 GETDATE() 函式來檢索當前日期和時間,方法是使用以下查詢:

SELECT CONVERT(VARCHAR(20),GETDATE())AS Result;

輸出

查詢執行後,它將生成如下所示的輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|               Feb 23 2023 11:19AM  |
+------------------------------------+ 

示例

考慮另一種情況,我們將使用 GETDATE() 以及 CONVERT() 函式並使用以下查詢提及樣式:

SELECT CONVERT(VARCHAR(11),GETDATE(),106) AS Result;

輸出

查詢執行後,它將生成如下所示的輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                       23 Feb 2023  |
+------------------------------------+
sql-conversion-functions.htm
廣告