类型转换函数

类型转换包括三种主要操作:转换、重新解释和提升。

  • 转换。指将一个值的数据类型更改为另一种数据类型的过程。这涉及额外的计算,仅由 TO_STRING() 函数执行。
  • 重新解释。指将表示一个值的二进制数据视为另一种数据类型,而不实际改变底层数据。此操作由 SINT() 处理,不涉及额外计算;它仅仅是重新解释现有数据。
  • 提升。指将一个值转换为“更大”或更精确的数据类型的过程。它也不需要额外计算;它仅仅是请求参数提供不同类型的值。仅 JSON 字段和少数其他函数可以将它们的值提升为整数。如果一个参数不能产生不同类型的值,则提升失败。例如,TIMEDIFF() 函数通常返回字符串,但也可以返回数字。因此,BIGINT(TIMEDIFF(1,2)) 会成功执行,强制 TIMEDIFF() 提供一个整数值。相反,DATE_FORMAT() 仅返回字符串,不能产生数字,这意味着 BIGINT(DATE_FORMAT(...)) 会失败。

BIGINT()

此函数将整数参数提升为64位类型,而浮点参数保持不变。它旨在确保特定表达式(如 a*b)以64位模式进行评估,即使所有参数都是32位。

DOUBLE()

DOUBLE() 函数将其参数提升为浮点类型。此设计用来帮助强制评估数值型 JSON 字段。

INTEGER()

INTEGER() 函数将其参数提升为64位有符号类型。此设计用来强制评估数值型 JSON 字段。

TO_STRING()

此函数强制将其参数转换为字符串类型。

UINT()

UINT() 函数将其参数提升为32位无符号整数类型。

UINT64()

UINT64() 函数将其参数提升为64位无符号整数类型。

SINT()

SINT() 函数强制重新解释其32位无符号整数参数为有符号,并将其扩展为64位类型(因为32位类型是无符号的)。例如,1-2 通常计算结果为 4294967295,但 SINT(1-2) 的计算结果为 -1。

Last modified: August 28, 2025