【发布时间】:2021-08-24 04:57:13
【问题描述】:
标准 SQL 中的强制转换和强制转换有什么区别?它们的用例是什么?
【问题讨论】:
标签: sql casting sqldatatypes
标准 SQL 中的强制转换和强制转换有什么区别?它们的用例是什么?
【问题讨论】:
标签: sql casting sqldatatypes
conversion 一词是指隐式或显式地将值从一种数据类型更改为另一种数据类型,例如一个 16 位整数到一个 32 位整数。
强制
强制转换一词用于表示隐式转换。超类型是一种常见的类型,可以将两个或多个表达式强制转换为该类型。
选角
单词 cast 通常指的是显式类型转换(与隐式转换相反)并使用 CAST() 函数,无论这是对位模式的重新解释还是真正的转换。
因此,强制是隐式的,强制转换是显式的,转换是其中的任何一个。
用例
通常在表达式中存在多种数据类型时发生。在这种情况下,会发生类型转换(类型提升)以避免数据丢失。变量的所有数据类型都升级为数据类型最大的变量的数据类型。
如果您尝试将某种类型的值分配给不同类型的位置,则可以生成与原始值具有相似含义的新类型值。这是胁迫。 Coercion 允许您通过创建在某种程度上类似于原始值的新值来使用新类型。一些强制可能会丢弃数据(例如,将 int 0x12345678 转换为短 0x5678),而其他可能不会(例如,将 int 0x00000008 转换为短 0x0008,或长 0x0000000000000008)。
回想一下,值可以有多种类型。如果您的情况稍有不同,并且您只想选择一种不同的值类型,则强制转换是这项工作的工具。强制转换只是表示您希望对值包含的特定类型进行操作。
【讨论】: