SQL CAST 函数

SQL Server 的 CAST 函数将一个表达式从一种数据类型转换为另一种数据类型。如果无法将表达式转换为所需数据类型,则此函数将返回错误。CAST 函数的语法是

CAST(Expression AS Data_Type [(Length)])

SELECT CAST(123 AS VARCHAR(50)) AS [result_name]
FROM [Source]
  • Expression:您要转换为所需数据类型的有效表达式。
  • Data_Type:指定要将给定表达式转换为的数据类型
  • Length:这是一个整数类型的可选参数。用于定义目标数据类型的长度。默认值为 30。

SQL CAST 函数示例

此函数将任何有效表达式转换为所需类型。以下查询将字符串转换为整数和十进制数。

首先,我们声明了一个 VARCHAR 变量。接下来,我们为其分配了字符串数据 ‘12121’。然后,我们将字符串值转换为整数。我们还使用 SQL Server 中的 ALIAS 列为新名称 ‘Result’ 赋值。

在下一行中,我们直接将 SQL CAST 函数应用于十进制值 123.456,并将其转换为整数(从高到低)。在这里,它将截断小数部分,返回 123。我建议您查阅 数据类型 以了解数据类型及其限制。

倒数第二个语句将字符串值更改为 DateTime 和 datetime2 数据类型。

最后,我们使用它将日期时间更改为 varchar。

DECLARE @str AS VARCHAR(50)
SET @str = '12121'

SELECT CAST(@str AS INT) AS Result; 

-- Direct Inputs
SELECT CAST('1234' AS DECIMAL(10, 2)) AS Result; 

SELECT CAST(123.456 AS INT) AS Result; 

SELECT CAST('07/03/2017' AS DATETIME) AS Value;  

SELECT CAST('07/03/2017' AS DATETIME2) AS Value;

SELECT CAST(GETDATE() AS VARCHAR(50)) AS Value;
CAST Function 1

CAST 示例 2

在此示例中,我们使用 SQL Server Cast 函数处理 NULL 值作为整数。

DECLARE @str AS VARCHAR(50)
SET @str = NULL

SELECT CAST(@str AS INT) AS Result;

SELECT CAST(NULL AS INT) AS Result;
CAST Function 2

让我们看看如果我们尝试将字符串 ‘Tutorial Gateway’ 转换为日期时间会发生什么。这是不可能的,因此它会返回一个错误作为输出。

SELECT CAST('Tutorial Gateway' AS INT) AS Result;

执行上述查询并查看错误消息。

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the Varchar value 'Tutorial Gateway' to data type int.

在此示例中,我们将把 CAST 函数应用于我们的 Employee 表。

代码

SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,CAST([YearlyIncome] AS DECIMAL(10, 3)) AS [Income]
      ,CAST([Sales] AS INT) AS [Amount]
      ,CAST([HireDate] AS DATETIME2) AS [Date]
  FROM [Employee]
CAST Function Example 5

评论已关闭。