VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

+运算符精度处理

功能描述

Vastbase G100在MySQL兼容模式下使用“+”运算符时,若左值为“0”且右值为任意带数字的字符串(charnum),则0 + charnum将得到与原字符串charnum中相同精度的浮点数或者整数。

语法格式

0 + charnum

参数说明

charnum

带数字的字符串。

注意事项

  • 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。

  • 仅Vastbase G100 V2.2 Build 10(Patch No.7)及以后版本支持此功能。

示例

示例1:通过cast(x as y)函数进行类型转换。

1、SELECT查看cast(x as y)的结果:

SELECT cast(2/3 AS char(6));

返回结果为:

 bpchar
--------
 .66666
(1 row)

2、查看0 + cast(x as y)的结果。

SELECT 0+cast(2/3 AS char(6));

返回结果为:

 ?column?
----------
   .66666
(1 row)

0 + cast(x as y)的结果精度与cast(x as y)的返回值精度相同。 >

> >- cast(x as y)为类型转换函数,用于将x转换成y指定的类型。参见类型转换函数。 >- 使用cast(x as char)将其他类型转换为CHAR类型时,PanWeiDB默认按char(1)取值字符串长度。如果需要变更功能,使cast(x as char)表现跟MySQL一致,即不限制长度,请将GUC参数 b_compatibility_mode设置为on。

示例2:在DML语句中使用0+charnum

1、创建测试表插入数据。

CREATE TABLE student(stdno int,student_age char(20),grade float8);
INSERT INTO student VALUES(001,'15.00',81.00);
INSERT INTO student VALUES(002,'16.00',82.01);
INSERT INTO student VALUES(003,'17.00',81.02);
INSERT INTO student VALUES(004,'13.00',83.50);
INSERT INTO student VALUES(005,'14.00',84.00);
INSERT INTO student VALUES(006,'15.00',89.50);
INSERT INTO student VALUES(007,'19.000',91.00);
INSERT INTO student VALUES(008,'12.0000',93);
INSERT INTO student VALUES(008,'11',61.0);

2、查看表student的数据,根据列stdno进行升序排序。

SELECT * FROM student ORDER BY stdno;

返回结果为:

 stdno |     student_age      | grade
-------+----------------------+-------
     1 | 15.00                |    81
     2 | 16.00                | 82.01
     3 | 17.00                | 81.02
     4 | 13.00                |  83.5
     5 | 14.00                |    84
     6 | 15.00                |  89.5
     7 | 19.000               |    91
     8 | 12.0000              |    93
     8 | 11                   |    61
(9 rows)

3、执行update操作。

UPDATE student SET student_age= (0 + student_age) WHERE 1=1;

4、更新成功,查看更新的结果。

SELECT * FROM student ORDER BY stdno;

返回结果为:

 stdno |                    student_age                     | grade
-------+----------------------------------------------------+-------
     1 | 15                                                 |    81
     2 | 16                                                 | 82.01
     3 | 17                                                 | 81.02
     4 | 13                                                 |  83.5
     5 | 14                                                 |    84
     6 | 15                                                 |  89.5
     7 | 19                                                 |    91
     8 | 12                                                 |    93
     8 | 11                                                 |    61
(9 rows)

5、清理环境。

DROP TABLE student;