SQL Server CAST

17 Mar 2025 | 4 分钟阅读

数据类型转换是一种用于将一种值的 数据类型更改为另一种类型的方法。SQL Server 可以通过两种方式转换值的 数据类型:隐式或显式。SQL Server 为其内部需求执行隐式转换。例如,以下查询将在 SQL Server 中隐式地将字符串数据类型转换为数字类型

这是输出

SQL Server CAST

SQL Server 返回整数值,因为它会在使用不同数据类型的两个值时将较低的数据类型转换为较高的数据类型。此过程表明了数据类型的隐式转换。

与隐式转换相反,我们通过数据转换函数由数据库管理员或程序员执行显式转换。本文将主要关注如何在 SQL Server 中使用 CAST 函数。

CAST 函数使用户能够显式地将表达式中指定的值从一种数据类型转换为另一种数据类型。以下语法说明了 SQL Server 中的 CAST 函数

在语法中,我们使用了以下参数

  • expression:它指定了一个要转换为其他类型的文字值或有效表达式。
  • data_type:它定义了我们希望将表达式转换成的目标数据类型。它可以包含以下数据类型作为输入:bigint、int、smallint、tinyint、bit、Decimal、numeric、money、float、datetime、char、nchar、varchar、nvarchar、text、ntext、binary、image 等。我们确保输入类型不应是别名数据类型。
  • length:这是一个可选参数,用于指定目标数据类型的长度。默认情况下,其值为 30。

返回值

CAST 函数将返回要转换为的数据类型的值。

SQL Server CAST 函数示例

让我们通过各种示例来了解 CAST 函数在 SQL Server 中的工作原理。我们可以直接在 SELECT 语句中使用 CAST 函数。

1. CAST 函数将 Decimal 转换为 Integer

以下示例将使用 CAST() 函数将十进制数 10.95 转换为整数

CAST 函数返回以下输出

SQL Server CAST

2. CAST 函数将 Decimal 转换为具有不同长度的另一个 Decimal

此示例将使用 CAST 函数将十进制数转换为具有零小数位数的另一个十进制数

CAST 函数返回以下输出

SQL Server CAST

当我们在不同位置转换数据类型值时,SQL Server 会根据以下规则给出截断或舍入的结果

从数据类型到数据类型结果
数字数字舍入
数字INT截断
数字金钱 (Money)舍入
FloatINT截断
Float数字舍入
FloatDATETIME舍入
DATETIMEINT舍入
金钱 (Money)INT舍入
金钱 (Money)数字舍入
非数字(char、nchar、varchar 或 nvarchar)INT、Float、Numeric 或 Decimal错误消息错误消息
空字符串(Empty String)数字或十进制错误消息

3. CAST 函数将 String 转换为 DATETIME

此示例将使用 CAST 函数将字符串'2021-04-26'转换为DATETIME值。

CAST 函数返回以下输出

SQL Server CAST

4. CAST 函数将 DATETIME 转换为 Varchar

此示例将使用 CAST 函数将当前日期和时间转换为字符串

CAST 函数返回以下输出

SQL Server CAST

5. 带有 NULL 值的 CAST 函数

此示例将展示 NULL 值如何与 CAST 函数一起使用。

这是输出

SQL Server CAST

6. 表上的 CAST 函数

在这里,我们将看到如何在表上使用 CAST 函数来过滤记录。假设我们有一个名为“orders”的表,其中包含以下数据

SQL Server CAST

在此表中,我们可以看到 prchase_date 列包含购买日期的项目。如果我们想获取所选日期范围内的项目列表,可以使用以下语句。在这里,文字字符串在评估 WHERE 条件之前被转换为时间戳值。

此语句返回以下结果

SQL Server CAST

TRY_CAST 函数

它是 SQL Server 中 CAST 函数的高级形式。它有助于数据转换过程,以防止在查询执行期间发生数据转换错误。假设我们要将字符串数据类型转换为整数。使用 CAST 函数可能会收到错误消息。当我们从各种数据源进行数据分析时,我们可能会在源数据中遇到此类值。在这种情况下,我们需要使用 TRY_CAST 函数来处理这些错误。CAST 和 TRY_CAST 函数的语法没有区别。如果我们在数据转换产生错误时使用 TRY_CAST 函数,我们将获得NULL结果。

让我们看看如果我们尝试使用 CAST 函数将字符串值转换为整数数据类型会发生什么

此语句将不执行,SQL Server 将引发以下错误消息:

SQL Server CAST

然而,如果我们使用TRY_CAST 函数,我们不会收到任何错误,并且会在结果中看到NULL值。请看以下查询

当我们执行此查询时,SQL Server 会返回 NULL 值而不是引发错误

SQL Server CAST
下一个主题SQL Server CONVERT