📜  在 SQL Server 中将值或表达式从一种数据类型转换为另一种数据类型

📅  最后修改于: 2022-05-13 01:54:59.099000             🧑  作者: Mango

在 SQL Server 中将值或表达式从一种数据类型转换为另一种数据类型

SQL Server 使用 CAST()函数将值或表达式从一种数据类型强制转换或转换为另一种数据类型。

句法 :

CAST ( value AS targettype [ ( length ) ] )

使用的参数:

  • 价值 -
    value 可以是将被转换的任何类型的任何值。
  • 目标类型 –
    targettype 是将值转换为的目标数据类型。例如 INT、BIT、SQL_VARIANT 等。
  • 长度 -
    length 是可选参数,指定目标类型的长度,默认长度为 30。

为了更好地理解,让我们按如下方式运行以下查询。

SELECT 3 + '3' AS Result;

输出 :

Result
6

它的结果是 6 作为一个数字。在上面的语句中,SQL Server 将字符'3' 隐式转换字符串数字 3。

笔记 -
当 SQL Server 中使用两个不同数据类型的值时,它会在进一步处理之前将较低的数据类型转换为较高的数据类型。这称为隐式转换。

另一方面,SQL Server 可以使用显式转换,其中 CAST()函数显式用于将一种类型的值转换为另一种类型,如下所示。

SELECT 3 + CAST('3' AS INT) AS Result;

输出 :

Result
6

为了在不同场景下转换数据类型的值,SQL Server 将根据以下规则返回截断值或舍入值,如下所示。

From Data Type  To Data TypeBehavior
numericnumericRound
numericintTruncate
floatintRound
floatnumericRound
floatdatetimeRound
datetimeintRound

例子 -

  • 示例-1:
    下面的示例使用 CAST()函数将十进制类型值转换为整数类型值。
    SELECT CAST(5.95 AS INT) AS Result;

    输出 :

    Result
    5
  • 示例 2 :
    下面的示例使用 CAST()函数将十进制类型值转换为另一个具有零刻度的十进制类型值数字。
    SELECT CAST(5.95 AS DEC(3, 0)) Result;

    输出 :

    Result
    6
  • 示例 3 :
    使用 CAST()函数将字符串转换为日期时间值示例。
    下面的示例使用 CAST()函数将字符串转换为日期时间。
    SELECT CAST('2020-09-14' AS DATETIME) 
    AS Result;

    输出 :

    Result
    2020-09-14 00:00:00.000