【问题标题】:Coercion vs Casting in standard SQL [duplicate]标准SQL中的强制与强制转换[重复]
【发布时间】:2021-08-24 04:57:13
【问题描述】:

标准 SQL 中的强制转换和强制转换有什么区别?它们的用例是什么?

【问题讨论】:

    标签: sql casting sqldatatypes


    【解决方案1】:

    conversion 一词是指隐式或显式地将值从一种数据类型更改为另一种数据类型,例如一个 16 位整数到一个 32 位整数。

    强制

    强制转换一词用于表示隐式转换。超类型是一种常见的类型,可以将两个或多个表达式强制转换为该类型。

    选角

    单词 cast 通常指的是显式类型转换(与隐式转换相反)并使用 CAST() 函数,无论这是对位模式的重新解释还是真正的转换。

    因此,强制是隐式的,强制转换是显式的,转换是其中的任何一个。

    用例

    通常在表达式中存在多种数据类型时发生。在这种情况下,会发生类型转换(类型提升)以避免数据丢失。变量的所有数据类型都升级为数据类型最大的变量的数据类型。

    如果您尝试将某种类型的值分配给不同类型的位置,则可以生成与原始值具有相似含义的新类型值。这是胁迫。 Coercion 允许您通过创建在某种程度上类似于原始值的新值来使用新类型。一些强制可能会丢弃数据(例如,将 int 0x12345678 转换为短 0x5678),而其他可能不会(例如,将 int 0x00000008 转换为短 0x0008,或长 0x0000000000000008)。

    回想一下,值可以有多种类型。如果您的情况稍有不同,并且您只想选择一种不同的值类型,则强制转换是这项工作的工具。强制转换只是表示​​您希望对值包含的特定类型进行操作。

    【讨论】:

    • 您如何知道 Davis 正在使用 BigQuery?他明确询问了 ANSI 标准 SQL
    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多