类型转换
在 XuguDB 中,表达式计算通常要求其操作数具有相同的数据类型,当表达式中包含不同数据类型的值时,数据库无法直接进行计算,为了支持这种跨数据类型的表达式求值,XuguDB提供了两种类型转换机制:显示转换与隐式转换。
显式转换:
用户主动使用SQL转换函数(如CAST, CONVERT、'::' 等)将值从一种数据类型转换为另一种数据类型,在SQL语句中明确写出转换操作。隐式转换:
数据库在执行SQL语句时自动进行的类型转换,用户无需在SQL中显式指定转换函数,遵循预定义的转换规则和优先级。
隐式转换规则如下:
- 在INSERT/UPDATE操作期间,会将值转换为受影响列的数据类型。
- 在SELECT操作期间,会将数据从列转换为目标变量的类型。
- 在操作数值时,通常会调整精度和小数位数,以实现最大容量。在这种情况下,由此类操作生成的数值数据类型可能与基础表中的数值数据类型不同。
- 将字符值与数值进行比较时,会将字符数据转换为数值。
- 字符值或NUMERIC与浮点数值之间的转换可能不精确。
- 进行赋值时,会将等号(=)右侧的值转换为左侧赋值目标的数据类型。