华为云用户手册

  • variance(expexpression,ression) 描述:var_samp的别名。 当入参类型为DOUBLE PRECISION时,入参取值范围为1.34E-154~1.34E+154,若数值超过取值范围则报错:value out of range: overflow。如果实际使用中不可避免入参超出范围,则使用cast函数强转该列类型为numeric。 返回类型:对于浮点类型的输入返回double precision类型,其他输入返回numeric类型。 示例: 1 2 3 4 5 SELECT VARIANCE(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; variance -------------------- 83650.730277028768 (1 row)
  • var_pop(expression) 描述:总体方差(总体标准差的平方)。 当入参类型为DOUBLE PRECISION时,入参取值范围为1.34E-154~1.34E+154,若数值超过取值范围则报错:value out of range: overflow。如果实际使用中不可避免入参超出范围,则使用cast函数强转该列类型为numeric。 返回类型:对于浮点类型的输入返回double precision类型,其他输入返回numeric类型。 示例: 1 2 3 4 5 SELECT VAR_POP(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; var_pop -------------------- 83650.692793695475 (1 row)
  • var_samp(expression) 描述:样本方差(样本标准差的平方)。 当入参类型为DOUBLE PRECISION时,入参取值范围为1.34E-154~1.34E+154,若数值超过取值范围则报错:value out of range: overflow。如果实际使用中不可避免入参超出范围,则使用cast函数强转该列类型为numeric。 返回类型:对于浮点类型的输入返回double precision类型,其他输入返回numeric类型。 示例: 1 2 3 4 5 SELECT VAR_SAMP(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; var_samp -------------------- 83650.730277028768 (1 row)
  • bit_and(expression) 描述:所有非NULL输入值的按位与(AND),如果全部输入值皆为NULL,那么结果也为NULL 。 返回类型:和参数数据类型相同。 示例: 1 2 3 4 5 SELECT BIT_AND(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; bit_and --------- 0 (1 row)
  • bit_or(expression) 描述:所有非NULL输入值的按位或(OR),如果全部输入值皆为NULL,那么结果也为NULL。 返回类型:和参数数据类型相同 示例: 1 2 3 4 5 SELECT BIT_OR(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; bit_or -------- 1023 (1 row)
  • checksum(expression) 描述:返回所有输入值的CHECKSUM值。使用该函数可以用来验证 GaussDB (DWS)数据库(不支持GaussDB(DWS)之外的其他数据库)的备份恢复或者数据迁移操作前后表中的数据是否相同。在备份恢复或者数据迁移操作前后都需要用户通过手工执行SQL命令的方式获取执行结果,通过对比获取的执行结果判断操作前后表中的数据是否相同。 对于大表,CHECKSUM函数可能会需要很长时间。 如果某两表的CHECKSUM值不同,则表明两表的内容是不同的。由于CHECKSUM函数中使用散列函数不能保证无冲突,因此两个不同内容的表可能会得到相同的CHECKSUM值,存在这种情况的可能性较小。对于列进行的CHECKSUM也存在相同的情况。 对于时间类型timestamp, timestamptz和smalldatetime,计算CHECKSUM值时请确保时区设置一致。 若计算某列的CHECKSUM值,且该列类型可以默认转为TEXT类型,则expression为列名。 若计算某列的CHECKSUM值,且该列类型不能默认转为TEXT类型,则expression为列名::TEXT。 若计算所有列的CHECKSUM值,则expression为表名::TEXT。 可以默认转换为TEXT类型的类型包括:char, name, int8, int2, int1, int4, raw, pg_node_tree, float4, float8, bpchar, varchar, nvarchar2, date, timestamp, timestamptz, numeric, smalldatetime,其他类型需要强制转换为TEXT。 返回类型:numeric 示例: 表中可以默认转为TEXT类型的某列的CHECKSUM值: 1 2 3 4 5 SELECT CHECKSUM(inv_quantity_on_hand) FROM tpcds.inventory; checksum ------------------- 24417258945265247 (1 row) 表中不能默认转为TEXT类型的某列的CHECKSUM值(注意此时CHECKSUM参数是列名::TEXT): 1 2 3 4 5 SELECT CHECKSUM(inv_quantity_on_hand::TEXT) FROM tpcds.inventory; checksum ------------------- 24417258945265247 (1 row) 表中所有列的CHECKSUM值。注意此时CHECKSUM参数是表名::TEXT,且表名前不加Schema: 1 2 3 4 5 SELECT CHECKSUM(inventory::TEXT) FROM tpcds.inventory; checksum ------------------- 25223696246875800 (1 row)
  • stddev_samp(expression) 描述:样本标准差。 当入参类型为DOUBLE PRECISION时,入参取值范围为1.34E-154~1.34E+154,若数值超过取值范围则报错:value out of range: overflow。如果实际使用中不可避免入参超出范围,则使用cast函数强转该列类型为numeric。 返回类型:对于浮点类型的输入返回double precision,其他输入返回numeric。 示例: 1 2 3 4 5 SELECT STDDEV_SAMP(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; stddev_samp ------------------ 289.224359757315 (1 row)
  • stddev_pop(expression) 描述:总体标准差。 当入参类型为DOUBLE PRECISION时,入参取值范围为1.34E-154~1.34E+154,若数值超过取值范围则报错:value out of range: overflow。如果实际使用中不可避免入参超出范围,则使用cast函数强转该列类型为numeric。 返回类型:对于浮点类型的输入返回double precision,其他输入返回numeric。 示例: 1 2 3 4 5 SELECT STDDEV_POP(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1; stddev_pop ------------------ 289.224294957556 (1 row)
  • group_concat(expression [ORDER BY {col_name | expr} [ASC | DESC]] [SEPARATOR str_val]) 描述:将列数据使用指定的str_val分隔符,按照ORDER BY子句指定的排序方式拼接成字符串,ORDER BY子句必须指定排序方式,不支持ORDER BY 1的写法。 expression:必选,指定列名或基于列的有效表达式,不支持DISTINCT关键字和VARIADIC参数。 str_val:可选,指定的分隔符,可以是字符串常数或基于分组列的确定性表达式。缺省时表示分隔符为逗号。 返回类型:text group_concat函数仅8.1.2及以上版本支持。 示例: 默认分隔符为逗号: 1 2 3 4 5 SELECT group_concat(sname) FROM group_concat_test; group_concat ------------------------------------------ ADAMS,FORD,JONES,KING,MILLER,SCOTT,SMITH (1 row) group_concat函数支持自定义分隔符: 1 2 3 4 5 SELECT group_concat(sname separator ';') from group_concat_test; group_concat ------------------------------------------ ADAMS;FORD;JONES;KING;MILLER;SCOTT;SMITH (1 row) group_concat函数支持ORDER BY子句,将列数据进行有序拼接: 1 2 3 4 5 SELECT group_concat(sname order by snumber separator ';') FROM group_concat_test; group_concat ------------------------------------------ MILLER;FORD;SCOTT;SMITH;KING;JONES;ADAMS (1 row)
  • listagg(expression [, delimiter]) WITHIN GROUP(ORDER BY order-list) 描述:将聚集列数据按WITHIN GROUP指定的排序方式排列,并用delimiter指定的分隔符拼接成一个字符串。 expression:必选。指定聚集列名或基于列的有效表达式,不支持DISTINCT关键字和VARIADIC参数。 delimiter:可选。指定分隔符,可以是字符串常数或基于分组列的确定性表达式,缺省时表示分隔符为空。 order-list:必选。指定分组内的排序方式。 返回类型:text listagg是兼容Oracle 11g2的列转行聚集函数,可以指定OVER子句用作窗口函数。为了避免与函数本身WITHIN GROUP子句的ORDER BY造成二义性,listagg用作窗口函数时,OVER子句不支持ORDER BY的窗口排序或窗口框架。 示例: 聚集列是文本字符集类型: 1 2 3 4 5 6 7 SELECT deptno, listagg(ename, ',') WITHIN GROUP(ORDER BY ename) AS employees FROM emp GROUP BY deptno; deptno | employees --------+-------------------------------------- 10 | CLARK,KING,MILLER 20 | ADAMS,FORD,JONES,SCOTT,SMITH 30 | ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD (3 rows) 聚集列是整型: 1 2 3 4 5 6 7 SELECT deptno, listagg(mgrno, ',') WITHIN GROUP(ORDER BY mgrno NULLS FIRST) AS mgrnos FROM emp GROUP BY deptno; deptno | mgrnos --------+------------------------------- 10 | 7782,7839 20 | 7566,7566,7788,7839,7902 30 | 7698,7698,7698,7698,7698,7839 (3 rows) 聚集列是浮点类型: 1 2 3 4 5 6 7 8 9 SELECT job, listagg(bonus, '($); ') WITHIN GROUP(ORDER BY bonus DESC) || '($)' AS bonus FROM emp GROUP BY job; job | bonus ------------+------------------------------------------------- CLERK | 10234.21($); 2000.80($); 1100.00($); 1000.22($) PRESIDENT | 23011.88($) ANALYST | 2002.12($); 1001.01($) MANAGER | 10000.01($); 2399.50($); 999.10($) SALESMAN | 1000.01($); 899.00($); 99.99($); 9.00($) (5 rows) 聚集列是时间类型: 1 2 3 4 5 6 7 SELECT deptno, listagg(hiredate, ', ') WITHIN GROUP(ORDER BY hiredate DESC) AS hiredates FROM emp GROUP BY deptno; deptno | hiredates --------+------------------------------------------------------------------------------------------------------------------------------ 10 | 1982-01-23 00:00:00, 1981-11-17 00:00:00, 1981-06-09 00:00:00 20 | 2001-04-02 00:00:00, 1999-12-17 00:00:00, 1987-05-23 00:00:00, 1987-04-19 00:00:00, 1981-12-03 00:00:00 30 | 2015-02-20 00:00:00, 2010-02-22 00:00:00, 1997-09-28 00:00:00, 1981-12-03 00:00:00, 1981-09-08 00:00:00, 1981-05-01 00:00:00 (3 rows) 聚集列是时间间隔类型: 1 2 3 4 5 6 7 SELECT deptno, listagg(vacationTime, '; ') WITHIN GROUP(ORDER BY vacationTime DESC) AS vacationTime FROM emp GROUP BY deptno; deptno | vacationtime --------+------------------------------------------------------------------------------------ 10 | 1 year 30 days; 40 days; 10 days 20 | 70 days; 36 days; 9 days; 5 days 30 | 1 year 1 mon; 2 mons 10 days; 30 days; 12 days 12:00:00; 4 days 06:00:00; 24:00:00 (3 rows) 分隔符缺省时,默认为空: 1 2 3 4 5 6 7 SELECT deptno, listagg(job) WITHIN GROUP(ORDER BY job) AS jobs FROM emp GROUP BY deptno; deptno | jobs --------+---------------------------------------------- 10 | CLERKMANAGERPRESIDENT 20 | ANALYSTANALYSTCLERKCLERKMANAGER 30 | CLERKMANAGERSALESMANSALESMANSALESMANSALESMAN (3 rows) listagg作为窗口函数时,OVER子句不支持ORDER BY的窗口排序,listagg列为对应分组的有序聚集: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SELECT deptno, mgrno, bonus, listagg(ename,'; ') WITHIN GROUP(ORDER BY hiredate) OVER(PARTITION BY deptno) AS employees FROM emp; deptno | mgrno | bonus | employees --------+-------+----------+------------------------------------------- 10 | 7839 | 10000.01 | CLARK; KING; MILLER 10 | | 23011.88 | CLARK; KING; MILLER 10 | 7782 | 10234.21 | CLARK; KING; MILLER 20 | 7566 | 2002.12 | FORD; SCOTT; ADAMS; SMITH; JONES 20 | 7566 | 1001.01 | FORD; SCOTT; ADAMS; SMITH; JONES 20 | 7788 | 1100.00 | FORD; SCOTT; ADAMS; SMITH; JONES 20 | 7902 | 2000.80 | FORD; SCOTT; ADAMS; SMITH; JONES 20 | 7839 | 999.10 | FORD; SCOTT; ADAMS; SMITH; JONES 30 | 7839 | 2399.50 | BLAKE; TURNER; JAMES; MARTIN; WARD; ALLEN 30 | 7698 | 9.00 | BLAKE; TURNER; JAMES; MARTIN; WARD; ALLEN 30 | 7698 | 1000.22 | BLAKE; TURNER; JAMES; MARTIN; WARD; ALLEN 30 | 7698 | 99.99 | BLAKE; TURNER; JAMES; MARTIN; WARD; ALLEN 30 | 7698 | 1000.01 | BLAKE; TURNER; JAMES; MARTIN; WARD; ALLEN 30 | 7698 | 899.00 | BLAKE; TURNER; JAMES; MARTIN; WARD; ALLEN (14 rows)
  • avg(expression) 描述:所有输入值的均值(算术平均)。 当入参类型为DOUBLE PRECISION时,入参取值范围为1.34E-154~1.34E+154,若数值超过取值范围则报错:value out of range: overflow。如果实际使用中不可避免入参超出范围,则使用cast函数强转该列类型为numeric。 返回类型: 对于任何整数类型输入,结果都是NUMBER类型。 对于任何浮点输入,结果都是DOUBLE PRECISION类型。 其他,和输入数据类型相同。 示例: 1 2 3 4 5 SELECT AVG(inv_quantity_on_hand) FROM tpcds.inventory; avg ---------------------- 500.0387129084044604 (1 row)
  • median(expression) 描述:所有输入值的中位数值。当前只支持数值类型和interval类型。其中空值不参与计算。 返回类型: 对于任何整型数据输入,结果都是NUMERIC类型。否则与输入数据类型相同。 Teradata兼容模式下,如果输入为整型,则返回的数据精度只有整数位。 示例: 1 2 3 4 5 SELECT MEDIAN(inv_quantity_on_hand) FROM tpcds.inventory; median -------- 500 (1 row)
  • percentile_cont(const) within group(order by expression) 描述:返回一个对应于目标列排序中指定分位数的值,如有必要就在相邻的输入项之间插入值。其中空值不参与计算。 输入:const为在0-1之间的数值,expression当前只支持数值类型和interval类型。 返回类型: 对于任何整型数据输入,结果都是NUMERIC类型。否则与输入数据类型相同。 Teradata兼容模式下,如果输入为整型,则返回的数据精度只有整数位。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT percentile_cont(0.3) within group(order by x) FROM (SELECT generate_series(1,5) AS x) AS t; percentile_cont ----------------- 2.2 (1 row) SELECT percentile_cont(0.3) within group(order by x desc) FROM (SELECT generate_series(1,5) AS x) AS t; percentile_cont ----------------- 3.8 (1 row)
  • array_agg(expression) 描述:将所有输入值(包括空)连接成一个数组。函数入参不支持数组形式。 返回类型:参数类型的数组。 示例: 创建表employeeinfo,并插入数据: 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE employeeinfo (empno smallint, ename varchar(20), job varchar(20), hiredate date,deptno smallint); INSERT INTO employeeinfo VALUES (7155, 'JACK', 'SALESMAN', '2018-12-01', 30); INSERT INTO employeeinfo VALUES (7003, 'TOM', 'FINANCE', '2016-06-15', 20); INSERT INTO employeeinfo VALUES (7357, 'MAX', 'SALESMAN', '2020-10-01', 30); SELECT * FROM employeeinfo; empno | ename | job | hiredate | deptno -------+-------+----------+---------------------+-------- 7155 | JACK | SALESMAN | 2018-12-01 00:00:00 | 30 7357 | MAX | SALESMAN | 2020-10-01 00:00:00 | 30 7003 | TOM | FINANCE | 2016-06-15 00:00:00 | 20 (3 rows) 查询部门编号为30的所有员工姓名: 1 2 3 4 5 SELECT array_agg(ename) FROM employeeinfo where deptno = 30; array_agg ------------ {JACK,MAX} (1 row) 查询属于同一个部门的所有员工: 1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT deptno, array_agg(ename) FROM employeeinfo group by deptno; deptno | array_agg --------+------------ 30 | {JACK,MAX} 20 | {TOM} (2 rows) SELECT distinct array_agg(ename) OVER (PARTITION BY deptno) FROM employeeinfo; array_agg ------------ {TOM} {JACK,MAX} (2 rows) 查询所有的部门编号且去重: 1 2 3 4 5 6 SELECT array_agg(distinct deptno) FROM employeeinfo group by deptno; array_agg ----------- {20} {30} (2 rows) 查询所有的部门编号去重后按降序排列: 1 2 3 4 5 SELECT array_agg(distinct deptno order by deptno desc) FROM employeeinfo; array_agg ----------- {30,20} (1 row)
  • sum(expression) 描述:所有输入行的expression总和。 返回类型: 通常情况下输入数据类型和输出数据类型是相同的,但以下情况会发生类型转换: 对于SMALLINT或INT输入,输出类型为BIGINT。 对于BIGINT输入,输出类型为NUMBER 。 对于浮点数输入,输出类型为DOUBLE PRECISION。 示例: 1 2 3 4 5 SELECT SUM(ss_ext_tax) FROM tpcds.STORE_SALES; sum -------------- 213267594.69 (1 row)
  • percentile_disc(const) within group(order by expression) 描述:返回第一个在排序中位置等于或者超过指定分数的输入值。 输入:const为在0-1之间的数值,expression当前只支持数值类型和interval类型。其中空值不参与计算。 返回类型:对于任何整型数据输入,结果都是NUMERIC类型。否则,与输入数据类型相同。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT percentile_disc(0.3) within group(order by x) FROM (SELECT generate_series(1,5) AS x) AS t; percentile_disc ----------------- 2 (1 row) SELECT percentile_disc(0.3) within group(order by x desc) FROM (SELECT generate_series(1,5) AS x) AS t; percentile_disc ----------------- 4 (1 row)
  • currval(regclass) 返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。需要注意的是,这个函数在默认情况下是不支持的,需要通过设置enable_beta_features为true之后,才能使用这个函数。同时在设置enable_beta_features为true之后,nextval()函数将不支持下推。 返回类型:bigint currval函数有两种调用方式(其中第二种调用方式兼容Oracle的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下: 示例1: 1 2 3 4 5 SELECT currval('seq1'); currval --------- 2 (1 row) 示例2: 1 2 3 4 5 SELECT seq1.currval seq1; currval --------- 2 (1 row)
  • lastval() 描述:返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。 需要注意的是,这个函数在默认情况下是不支持的,需要通过设置enable_beta_features或者lastval_supported为true之后,才能使用这个函数。同时这种情况下,nextval()函数将不支持下推。 返回类型:bigint 示例: 1 2 3 4 5 SELECT lastval(); lastval --------- 2 (1 row)
  • setval(regclass, bigint, boolean) 描述:设置序列的当前数值以及is_called标志。 返回类型:bigint 示例: 1 2 3 4 5 SELECT setval('seqDemo',1,true); setval -------- 1 (1 row) Setval后当前会话及GTM上会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知Setval的作用。所以为了避免序列值冲突,setval要谨慎使用。 因为序列是非事务的,setval造成的改变不会由于事务的回滚而撤销。
  • nextval(regclass) 递增序列并返回新值。 为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;也就是说,一旦获取了一个值,它就会被认为已被使用,并且不会再次返回。 即使该操作处于事务中,当事务随后中断,或者调用查询最终没有使用该值,也会出现这种情况。这种情况将在指定值的顺序中留下未使用的“空洞”。 因此,GaussDB(DWS)序列对象不能用于获取“无间隙”序列。 如果nextval被下推到DN上时,各个DN会自动连接GTM,请求next values值,例如(INSERT INTO t1 SELECT xxx,t1某一列需要调用nextval函数),由于GTM上有最大连接数为8192的限制,而这类下推语句会导致消耗过多的GTM连接数,因此对于这类语句的并发数目限制为7000(其它语句需要占用部分连接)/集群DN数目。 返回类型:bigint nextval函数有两种调用方式(其中第二种调用方式兼容Oracle的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下: 示例1: 1 2 3 4 5 SELECT nextval('seqDemo'); nextval --------- 2 (1 row) 示例2: 1 2 3 4 5 SELECT seqDemo.nextval; nextval --------- 2 (1 row)
  • uuid_generate_v1() 描述:生成一个UUID类型的序列号。 返回类型:UUID 示例: 1 2 3 4 5 SELECT uuid_generate_v1(); uuid_generate_v1 -------------------------------------- c71ceaca-a175-11e9-a920-797ff7000001 (1 row) uuid_generate_v1函数根据时间信息、集群节点编号和生成该序列的线程号生成UUID,该UUID在单个集群内是全局唯一的,但在多个集群间的时间信息、集群节点编号、线程号和时钟序列仍然存在同时相等的可能性,因此多个集群间生成的UUID仍然存在极低概率的重复风险。
  • sys_guid() 描述:生成Oracle的GUID序列号,类似UUID。此函数为Oracle兼容性函数。 返回类型:text 示例: 1 2 3 4 5 SELECT sys_guid(); sys_guid ---------------------------------- 4EBD3C74A17A11E9A1BF797FF7000001 (1 row) sys_guid函数内部生成原理同uuid_generate_v1函数。
  • UUID函数应用示例 UUID全局唯一的特点,可以作为数据表生成主键,也可以作为数据表的分布列,uuid_generate_v1()作为数据表分布列的默认值时,通过Hash分布可以将数据均匀分布到各个DN上,防止数据倾斜。 UUID的显著优点就是全局唯一,不需要中心节点,单个节点独立生成。但是也存在缺点,UUID较INT占用更多的存储空间,索引效率低,生成的ID随机,没有递增的特性,所以辨识困难。因此,在应用中,要根据实际情况选择UUID还是Sequence作为数据表主键。 示例如下: INT类型作为分布列。 创建示例哈希表mytable01,int类型作为分布列,插入数据后,查询数据存在数据倾斜。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 CREATE TABLE mytable01(a INT, b INT) DISTRIBUTE BY hash(a); CREATE TABLE INSERT INTO mytable01 VALUES(1, 10); INSERT 0 1 INSERT INTO mytable01 VALUES(1, 10); INSERT 0 1 INSERT INTO mytable01 VALUES(1, 10); INSERT 0 1 INSERT INTO mytable01 VALUES(1, 10); INSERT 0 1 INSERT INTO mytable01 VALUES(1, 10); INSERT 0 1 SELECT * FROM mytable01; a | b ---+---- 1 | 10 1 | 10 1 | 10 1 | 10 1 | 10 (5 rows) SELECT table_skewness('mytable01'); table_skewness ------------------------------------- ("dn_6003_6004 ",5,100.000%) ("dn_6001_6002 ",0,0.000%) ("dn_6005_6006 ",0,0.000%) (3 rows) UUID类型作为分布列。 创建示例哈希表mytable02,UUID类型作为分布列,插入数据后,查询数据分布正常。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 CREATE TABLE mytable02 (id UUID default uuid_generate_v1(), a INT, b INT) DISTRIBUTE BY hash(id); CREATE TABLE INSERT INTO mytable02(a, b) VALUES(1, 10); INSERT 0 1 INSERT INTO mytable02(a, b) VALUES(1, 10); INSERT 0 1 INSERT INTO mytable02(a, b) VALUES(1, 10); INSERT 0 1 INSERT INTO mytable02(a, b) VALUES(1, 10); INSERT 0 1 INSERT INTO mytable02(a, b) VALUES(1, 10); INSERT 0 1 SELECT * FROM mytable02; id | a | b --------------------------------------+---+---- 63e45c14-cc74-0e00-e9aa-0a2c3fa0fffe | 1 | 10 63e45c1f-4d18-0700-e9ab-0a2c3fa0fffe | 1 | 10 63e45c26-f859-0b00-e9ad-0a2c3fa0fffe | 1 | 10 63e45c23-9e5d-0300-e9ac-0a2c3fa0fffe | 1 | 10 63e45c2a-5825-0600-e9ae-0a2c3fa0fffe | 1 | 10 (5 rows) SELECT table_skewness('mytable02'); table_skewness ------------------------------------ ("dn_6001_6002 ",3,60.000%) ("dn_6003_6004 ",2,40.000%) ("dn_6005_6006 ",0,0.000%) (3 rows)
  • to_timestamp(double precision) 描述:把UNIX纪元转换成时间戳。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT to_timestamp(1284352323); to_timestamp ------------------------ 2010-09-13 12:32:03+08 (1 row)
  • to_char (integer/number[, fmt]) 描述:将一个整型或者浮点类型的值转换为指定格式的字符串。 可选参数fmt可以为以下几类:十进制字符、“分组”符、正负号和货币符号,每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:9、0、,(千分隔符)、.(小数点)。 模板可以有类似FM的修饰词,但FM不抑制由模板0指定而输出的0。 要将整型类型的值转换成对应16进制值的字符串,使用模板X或x。 返回值类型:varchar 示例: 1 2 3 4 5 SELECT to_char(1485,'9,999'); to_char --------- 1,485 (1 row) 1 2 3 4 5 SELECT to_char( 1148.5,'9,999.999'); to_char ------------ 1,148.500 (1 row) 1 2 3 4 5 SELECT to_char(148.5,'990999.909'); to_char ------------- 0148.500 (1 row) 1 2 3 4 5 SELECT to_char(123,'XXX'); to_char --------- 7B (1 row)
  • to_clob(char/nchar/varchar/nvarchar/varchar2/nvarchar2/text/raw) 描述:将RAW类型或者文本字符集类型CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2、TEXT转成CLOB类型。 返回值类型:clob 示例: 1 2 3 4 5 SELECT to_clob('ABCDEF'::RAW(10)); to_clob --------- ABCDEF (1 row) 1 2 3 4 5 SELECT to_clob('hello111'::CHAR(15)); to_clob ---------- hello111 (1 row) 1 2 3 4 5 SELECT to_clob('gauss123'::NCHAR(10)); to_clob ---------- gauss123 (1 row) 1 2 3 4 5 SELECT to_clob('gauss234'::VARCHAR(10)); to_clob ---------- gauss234 (1 row) 1 2 3 4 5 SELECT to_clob('gauss345'::VARCHAR2(10)); to_clob ---------- gauss345 (1 row) 1 2 3 4 5 SELECT to_clob('gauss456'::NVARCHAR2(10)); to_clob ---------- gauss456 (1 row) 1 2 3 4 5 SELECT to_clob('World222!'::TEXT); to_clob ----------- World222! (1 row)
  • to_timestamp(text, text) 描述:将字符串类型的值转换为指定格式的时间戳。 返回值类型:timestamp 示例: 1 2 3 4 5 SELECT to_timestamp('05 Dec 2000', 'DD Mon YYYY'); to_timestamp --------------------- 2000-12-05 00:00:00 (1 row) 表1显示了可以用于格式化数值的模板模式,适用于函数to_number。
  • to_date(string, fmt) 描述:将字符串string按fmt指定格式转化为DATE类型的值。该函数不能直接支持CLOB类型,但是CLOB类型的参数能够通过隐式转换实现。 返回值类型:date 示例: 1 2 3 4 5 SELECT TO_DATE('05 Dec 2010','DD Mon YYYY'); to_date --------------------- 2010-12-05 00:00:00 (1 row)
  • to_number ( expr [, fmt]) 描述:将expr按指定格式转换为一个NUMBER类型的值。 类型转换格式请参考表1。 转换十六进制字符串为十进制数字时,最多支持16个字节的十六进制字符串转换为无符号数。 转换十六进制字符串为十进制数字时,格式字符串中不允许出现除“x”或“X”以外的其他字符,否则报错。 返回值类型:number 示例: 1 2 3 4 5 SELECT to_number('12,454.8-', '99G999D9S'); to_number ----------- -12454.8 (1 row)
  • rawtohex(string) 描述:将RAW数据类型值转换为相应的十六进制表示的字符串。string中的每个字节都被转换一个双字节的字符串。 结果为输入字符的A CS II码,以十六进制表示。 返回值类型:varchar 示例: 1 2 3 4 5 SELECT rawtohex('1234567'); rawtohex ---------------- 31323334353637 (1 row)
共100000条