云数据库 GAUSSDB-函数:示例
示例
示例1:圆整函数参数类型解析。只有一个round函数有两个参数(第一个是numeric,第二个是integer)。所以下面的查询自动把第一个类型为integer的参数转换成numeric类型。
1 2 3 4 5 |
gaussdb=# SELECT round(4, 4); round -------- 4.0000 (1 row) |
实际上它被分析器转换成:
1
|
gaussdb=# SELECT round(CAST (4 AS numeric), 4); |
因为带小数点的数值常量初始时被赋予numeric类型,因此下面的查询将不需要类型转换,并且可能会略微高效一些。
1
|
gaussdb=# SELECT round(4.0, 4); |
示例2:子字符串函数类型解析。有好几个substr函数,其中一个接受text和integer类型。如果用一个未声明类型的字符串常量调用它,系统将选择接受string类型范畴的首选类型(也就是text类型)的候选函数。
1 2 3 4 5 |
gaussdb=# SELECT substr('1234', 3); substr -------- 34 (1 row) |
如果该字符串声明为varchar类型,就像从表中取出来的数据一样,分析器将试着将其转换成text类型。
1 2 3 4 5 |
gaussdb=# SELECT substr(varchar '1234', 3); substr -------- 34 (1 row) |
被分析器转换后实际上变成:
1
|
gaussdb=# SELECT substr(CAST (varchar '1234' AS text), 3); |
分析器从pg_cast表中了解到text和varchar是二进制兼容的,一个可以传递给接受另一个的函数而不需要做任何物理转换。因此,在这种情况下,实际上没有做任何类型转换。
如果以integer为参数调用函数,分析器将试图将其转换成text类型:
1 2 3 4 5 |
gaussdb=# SELECT substr(1234, 3); substr -------- 34 (1 row) |
被分析器转换后实际上变成:
1 2 3 4 5 |
gaussdb=# SELECT substr(CAST (1234 AS text), 3); substr -------- 34 (1 row) |
- GaussDB培训_GaussDB教程_高斯数据库培训-华为云
- GaussDB视频教程_gaussdb查看表结构语句_高斯数据库视频教程_华为云
- GaussDB考试_GaussDB数据库考试_高斯数据库考试_华为云
- GaussDB函数_GaussDB数据库函数_高斯数据库函数_华为云
- 分布式云原生集合示例_华为云分布式云原生_华为云UCS集合示例
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云
- GaussDB数据库考试_GaussDB认证_高斯数据库考试_华为云
- GaussDB支持的函数_GaussDB函数类型解析_高斯数据库支持的函数-华为云
- 调用函数_函数调用方式_函数工作流 FunctionGraph-华为云
- GaussDB数据库函数_GaussDB函数和操作符_高斯数据库函数-华为云