SQL Server CONVERT

17 Mar 2025 | 5 分钟阅读

数据类型转换是一种将值的 数据类型 转换为另一种类型的方法。 所有编程语言都必须具有一些数据类型转换函数。 同样,SQL Server 允许用户以隐式显式方式更改值的 数据类型。 SQL Server 会根据其内部需求执行隐式转换。 相比之下,数据库管理员或程序员借助数据转换函数执行显式转换。 本文将主要关注 CONVERT 函数在 Microsoft SQL Server 中的使用。

CONVERT 函数使用户能够将值的 数据类型 转换为表达式中指定的另一种类型SQL Server 中 CONVERT 函数的语法如下所示

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

  • data_type: 它表示我们要将表达式转换成的目标数据类型。 它包括以下数据类型作为输入:bigint、int、smallint、tinyint、bit、decimal、numeric、money、float、datetime、char、nchar、varchar、nvarchar、text、ntext、binary、image 等。 我们确保输入数据类型不应该是别名类型。
  • length: 它是用于指定目标数据类型长度的可选参数。 默认情况下,它的值为 30。
  • expr: 它指定我们要转换为另一种类型的有效表达式。
  • style: 这是一个可选值,表示转换后值的输出样式。 当它为 NULL 时,我们将得到 NULL 值。 它对于 DATE 数据类型格式很有用。

返回值

它将以我们想要转换数据类型的表达式返回值,并具有指定的样式。

CONVERT 函数示例

让我们通过各种实际示例来了解 CONVERT 函数。

将 FLOAT 转换为 INT

此示例将 float 值的 数据类型 转换为整数。 在这里,我们首先声明一个 float 变量,然后为其分配 float 值。 接下来,我们将借助 CONVERT 函数将 float 值转换为整数并打印结果。

执行后,我们将得到以下输出

SQL Server CONVERT

将 Float 转换为 Varchar

此示例将 float 值的 数据类型 转换为 varchar。 它与上面的示例类似,只是在这里我们将借助 CONVERT 函数将 float 值转换为 varchar。

执行后,我们将得到以下输出

SQL Server CONVERT

将 decimal 转换为另一个具有不同长度的 decimal

此示例将借助 CONVERT 函数将十进制数转换为另一个具有零位数的十进制数。 此函数的舍入和截断行为与 SQL Server 中的 CAST 函数类似。

执行后,我们将得到以下输出

SQL Server CONVERT

将字符串转换为 DATETIME

此示例将字符串 '2021-04-26' 转换为 DATETIME 值,并借助 CONVERT 函数。

执行后,我们将得到以下输出

SQL Server CONVERT

将 DATETIME 转换为 Varchar

此示例将当前日期和时间使用 CONVERT 函数转换为具有特定样式的字符串。

执行后,我们将得到以下输出

SQL Server CONVERT

带有表的转换函数

在这里,我们将了解如何在表中使用转换函数来过滤记录。 让我们首先使用以下语句创建一个表 "orders"

我们可以使用 SELECT 语句验证表

SQL Server CONVERT

在上面的表中,purchase_date 的数据类型是 DATE。 如果我们想在选定的日期范围内获取项目列表,我们可以使用以下语句。

这是输出

SQL Server CONVERT

TRY_CONVERT 函数

它是 SQL Server 中 CONVERT 函数的更高级形式。 它在数据转换过程中很有用,以防止在查询执行期间出现数据转换错误。 使用 CONVERT 函数,我们有可能在将数据类型转换为另一种形式时由于不合适或脏数据而出现错误。 但是,可以通过使用 TRY_CONVERT 函数来避免这些错误。 CONVERT 和 TRY_CONVERT 函数的语法没有区别。 如果我们使用 TRY_CONVERT 函数时数据转换生成错误,我们将得到 NULL 结果。

让我们看下面的示例,我们将尝试使用 CONVERT 函数将字符串值转换为整数数据类型

当我们执行此查询时,SQL Server 将引发以下错误

SQL Server CONVERT

但是,SQL Server 有一个 TRY_CONVERT 函数,可以防止出现此类错误并返回 NULL 值。 请看下面的查询

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

SQL Server CONVERT

CAST 和 CONVERT 函数的区别

SQL Server 始终使用 CAST 和 CONVERT 函数进行数据类型转换。 但是,它们之间存在一些差异,我们将在下面讨论

  • CONVERT 不是 ANSI-SQL 规范的一部分。 实际上,它是 SQL 实现特定的。 另一方面,CAST 纯粹是 ANSI-SQL 规范的一部分。
  • 它们之间的另一个区别是 CONVERT 函数可以接受一个可选的样式参数,该参数指定转换后数据类型的格式,而 CAST 则不能。
  • CAST 使用 'AS' 子句来分隔参数,而 CONVERT 使用逗号 (,) 运算符来分隔参数。
  • CAST 函数可以在将十进制值转换为整数期间保留十进制值。 如果需要,它还可以截断十进制值。 另一方面,使用 CONVERT 函数无法实现此功能。