Skip to content

数据类型隐式转换

数据类型隐式转换用于将一个常量或表达式从一种数据类型转换为另一种数据类型,前提是两种数据类型间能够进行转换。 下表展示虚谷数据库中能够隐式转换的数据类型。

数据类型隐式转换规则

  • 在INSERT/UPDATE操作期间,会将值转换为受影响列的数据类型。
  • 在SELECT操作期间,会将数据从列转换为目标变量的类型。
  • 在操作数值时,通常会调整精度和小数位数,以实现最大容量。在这种情况下,由此类操作生成的数值数据类型可能与基础表中的数值数据类型不同。
  • 将字符值与数值进行比较时,会将字符数据转换为数值。
  • 字符值与浮点数值之间的转换可能不精确。
  • 进行赋值时,会将等号(=)右侧的值转换为左侧赋值目标的数据类型。

数据类型隐式转换示例

sql
-- 将字符串转换为整数
SELECT 12+'10' FROM dual;

EXPR1 |
------------------------------------------------------------------------------
22 |

-- 将整数转换为浮点数,浮点数转换为整数
CREATE TABLE TEST0(A INT, B FLOAT);

INSERT INTO TEST0 VALUES(3.14,12);

SELECT * FROM TEST0;

A | B | 
------------------------------------------------------------------------------
3 | 1.200000e+01 |

-- DDL时输入值向数据类型转换
CREATE TABLE TEST1(A INT,B VARCHAR);

INSERT INTO TEST1 VALUES(1,'AA')(2,'BB');

CREATE TABLE TEST2(A VARCHAR,B CLOB);

IMPORT TABLE TEST2 FROM SELECT * FROM TEST1;

SET SHOW_TYPE ON;

SELECT * FROM TEST2;

A(CHAR(-1)) | B(CLOB) | 
------------------------------------------------------------------------------
1| AA|
2| BB|

-- DML时输入值向数据类型转换
INSERT INTO TEST1 VALUES('3',SYSDATE);

SELECT * FROM TEST1;

A(INTEGER) | B(CHAR(-1)) | 
------------------------------------------------------------------------------
1 | AA|
2 | BB|
3 | 2022-10-08 11:10:04|