华为云用户手册

  • 操作步骤 获取词典定义文件和词缀文件。 用户可以使用开源词典,直接获取的开源词典后缀名可能为.aff和.dic,此时需要将扩展名改为.affix和.dict。此外,对于某些词典文件,还需要使用下面的命令把字符转换成UTF-8编码,比如挪威语词典: 1 2 iconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff iconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic 创建Ispell词典。 1 2 3 4 5 6 CREATE TEXT SEARCH DICTIONARY norwegian_ispell ( TEMPLATE = ispell, DictFile = nn_no, AffFile = nn_no, FilePath = 'obs://bucket01/obs.xxx.xxx.com accesskey=xxxxx secretkey=xxxxx region=cn-north-1' ); 其中,词典文件全名为nn_no.dict和nn_no.affix,所在目录为 'obs://bucket01/obs.xxx.xxx.com accesskey=xxxxx secretkey=xxxxx region=cn-north-1'。关于创建词典的语法和更多参数,请参见CREATE TEXT SEARCH DICTIONARY。 使用Ispell词典进行复合词拆分。 1 2 3 4 5 SELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk'); ts_lexize --------------------- {sjokolade,fabrikk} (1 row) MySpell不支持复合词,Hunspell对复合词有较好的支持。 GaussDB (DWS)仅支持Hunspell中基本的复合词操作。通常情况下,Ispell词典能够识别的词是一个有限集合,其后应该配置一个更广义的词典,例如一个可以识别所有词的Snowball词典。
  • 注意事项 不能回滚到未定义的保存点,语法上会报错。 在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前面打开了的游标在保存点里面,并且游标被一个FETCH命令影响,而这个保存点稍后回滚了,那么这个游标的位置仍然在FETCH让它指向的位置(也就是FETCH不会被回滚)。关闭一个游标的行为也不会被回滚给撤销掉。如果一个游标的操作导致事务回滚,那么这个游标就会置于不可执行状态,所以,尽管一个事务可以用ROLLBACK TO SAVEPOINT重新恢复,但是游标不能再使用了。 使用ROLLBACK TO SAVEPOINT回滚到保存点。使用RELEASE SAVEPOINT删除保存点,但是保留该保存点建立后执行的命令的效果。
  • 示例 撤销 my_savepoint 建立之后执行的命令的影响: 1 ROLLBACK TO SAVEPOINT my_savepoint; 游标位置不受保存点回滚的影响: 1 2 3 4 5 6 7 8 9 10 11 12 13 BEGIN; DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2; SAVEPOINT foo; FETCH 1 FROM foo; ?column? ---------- 1 ROLLBACK TO SAVEPOINT foo; FETCH 1 FROM foo; ?column? ---------- 2 COMMIT;
  • ts_stat(sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) 描述:获取tsvector列的统计数据。 返回类型:setof record 示例: 1 2 3 4 5 6 SELECT ts_stat('select ''hello world''::tsvector'); ts_stat ------------- (world,1,1) (hello,1,1) (2 rows)
  • ts_parse(parser_oid oid, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 SELECT ts_parse(3722, 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows)
  • ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 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 SELECT ts_token_type('default'); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows)
  • ts_debug([ config regconfig, ] document text, OUT alias text, OUT description text, OUT token text, OUT dictionaries regdictionary[], OUT dictionary regdictionary, OUT lexemes text[]) 描述:测试一个配置。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9 SELECT ts_debug('english', 'The Brightest supernovaes'); ts_debug ----------------------------------------------------------------------------------- (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",Brightest,{english_stem},english_stem,{brightest}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",supernovaes,{english_stem},english_stem,{supernova}) (5 rows)
  • ts_parse(parser_name text, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 SELECT ts_parse('default', 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows)
  • ts_token_type(parser_oid oid, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 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 SELECT ts_token_type(3722); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows)
  • 时间/日期操作符 用户在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生用户非预期的结果。 比如下面示例没有明确数据类型就会出现异常错误。 1 SELECT date '2001-10-01' - '7' AS RESULT; 表1 时间和日期操作符 操作符 示例 + date类型参数与integer参数相加,获取时间间隔为7天后的时间: 1 2 3 4 5 SELECT date '2001-09-28' + integer '7' AS RESULT; result --------------------- 2001-10-05 00:00:00 (1 row) date类型参数与interval参数相加,获取时间间隔为1小时后的时间: 1 2 3 4 5 SELECT date '2001-09-28' + interval '1 hour' AS RESULT; result --------------------- 2001-09-28 01:00:00 (1 row) date类型参数与interval参数相加,获取时间间隔为1个月的时间: date函数对于日期相加减超过月份的日期范围,会对齐到对应月份最后一天,不超过则不处理。 1 2 3 4 5 SELECT date '2021-01-31' + interval '1 month' AS RESULT; result --------------------- 2021-02-28 00:00:00 (1 row) 1 2 3 4 5 SELECT date '2021-02-28' + interval '1 month' AS RESULT; result --------------------- 2021-03-28 00:00:00 (1 row) date类型参数与time类型参数相加,获取具体的日期和时间结果: 1 2 3 4 5 SELECT date '2001-09-28' + time '03:00' AS RESULT; result --------------------- 2001-09-28 03:00:00 (1 row) interval参数相加,获取两个时间间隔之和: 1 2 3 4 5 SELECT interval '1 day' + interval '1 hour' AS RESULT; result ---------------- 1 day 01:00:00 (1 row) timestamp时间类型参数与interval参数相加,获取间隔23小时后的时间: 1 2 3 4 5 SELECT timestamp '2001-09-28 01:00' + interval '23 hours' AS RESULT; result --------------------- 2001-09-29 00:00:00 (1 row) time类型参数与interval参数相加,获取间隔时间为3小时后的时间: 1 2 3 4 5 SELECT time '01:00' + interval '3 hours' AS RESULT; result ---------- 04:00:00 (1 row) - date类型参数相减,获取两个日期的时间差: 1 2 3 4 5 SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result -------- 3 days (1 row) date类型参数与integer参数相减,返回timestamp类型,获取两者的时间差: 1 2 3 4 5 SELECT date '2001-10-01' - integer '7' AS RESULT; result --------------------- 2001-09-24 00:00:00 (1 row) date类型参数与interval参数相减,获取两者的日期、时间差: 1 2 3 4 5 SELECT date '2001-09-28' - interval '1 hour' AS RESULT; result --------------------- 2001-09-27 23:00:00 (1 row) time类型参数相减,获取两参数的时间差: 1 2 3 4 5 SELECT time '05:00' - time '03:00' AS RESULT; result ---------- 02:00:00 (1 row) time类型参数与interval相减,获取两参数的时间差: 1 2 3 4 5 SELECT time '05:00' - interval '2 hours' AS RESULT; result ---------- 03:00:00 (1 row) timestamp类型参数与interval相减,从时间戳中减去时间间隔,获取两者的日期时间差: 1 2 3 4 5 SELECT timestamp '2001-09-28 23:00' - interval '23 hours' AS RESULT; result --------------------- 2001-09-28 00:00:00 (1 row) interval参数相减,获取两者的时间差: 1 2 3 4 5 SELECT interval '1 day' - interval '1 hour' AS RESULT; result ---------- 23:00:00 (1 row) timestamp类型参数相减,获取两者的日期时间差: 1 2 3 4 5 SELECT timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' AS RESULT; result ---------------- 1 day 15:00:00 (1 row) 获取当前日期的前一天: 1 2 3 4 5 SELECT now() - interval '1 day'AS RESULT; result ------------------------------- 2022-08-08 01:46:15.555406+00 (1 row) * 将时间间隔乘以数量: 1 2 3 4 5 SELECT 900 * interval '1 second' AS RESULT; result ---------- 00:15:00 (1 row) 1 2 3 4 5 SELECT 21 * interval '1 day' AS RESULT; result --------- 21 days (1 row) 1 2 3 4 5 SELECT double precision '3.5' * interval '1 hour' AS RESULT; result ---------- 03:30:00 (1 row) / 用时间间隔除以数量,获取一段时间中的某一段: 1 2 3 4 5 SELECT interval '1 hour' / double precision '1.5' AS RESULT; result ---------- 00:40:00 (1 row) 父主题: 时间、日期处理函数和操作符
  • pgxc_cancel_query(queryId int) 描述:取消当前集群下正在执行的查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 备注:如果所有节点的查询均已取消,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET'; query_id ---------- 0 0 (2 rows) SELECT pgxc_cancel_query(0); pgxc_cancel_query ------------------- f (1 row)
  • pgxc_terminate_query(queryId int) 描述:终止当前集群下正在执行的查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT query_id FROM pgxc_stat_activity; query_id ----------------- 72339069014638631 (1 rows) SELECT pgxc_terminate_query(72339069014638631); pgxc_terminate_query ---------------------- t (1 row)
  • pg_cancel_query(queryId int) 描述:取消一个后端的当前查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 备注:pg_cancel_query向由query_id标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的query_id可以从pg_stat_activity视图的query_id字段找到。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET'; query_id ---------- 0 0 (2 rows) SELECT pg_cancel_query(0); pg_cancel_query ----------------- f (1 row)
  • pg_terminate_query(queryId int) 描述:终止一个后端的当前查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 示例: 1 2 3 4 5 6 7 8 9 10 11 12 SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET'; query_id ---------- 0 0 (2 rows) SELECT pg_terminate_query(0); pg_terminate_query -------------------- f (1 row)
  • pg_wlm_jump_queue(pid int) 描述:调整任务到CN队列的最前端。 返回值类型:boolean 备注:如果成功,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET'; pid ----------------- 281471222065200 (1 row) SELECT pg_wlm_jump_queue(281471222065200); pg_wlm_jump_queue ------------------- t (1 row)
  • pg_cancel_backend(pid int) 描述:取消一个后端的当前查询。 返回值类型:boolean 备注:pg_cancel_backend向由pid标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库进程。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET'; pid ----------------- 281471222065200 (1 row) SELECT pg_cancel_backend(281471222065200); pg_cancel_backend ------------------- t (1 row)
  • pg_rotate_logfile() 描述:滚动服务器的日志文件。 返回值类型:boolean 备注:pg_rotate_logfile通知日志文件管理器立即切换到一个新的输出文件。该函数仅在内置日志收集器运行时有效。 示例: 1 2 3 4 5 SELECT pg_rotate_logfile(); pg_rotate_logfile ------------------- t (1 row)
  • pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:boolean 备注:如果成功,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 SELECT pid FROM pg_stat_activity; pid ----------------- 140657876268816 140433774061312 140433587902208 140433656592128 140433723717376 140433637189376 140433552770816 140433481983744 140433349310208 (9 rows) SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row)
  • 参数说明 schema_name 模式名字。 模式名不能和当前数据库里其他的模式重名。 模式的名字不可以“pg_”开头。 取值范围:字符串,要符合标识符的命名规范。 AUTHORIZATION user_name 指定模式的所有者。当不指定schema_name时,把user_name当作模式名,此时user_name只能是角色名。 取值范围:已存在的用户名/角色名。 WITH PERM SPACE 'space_limit' 指定模式的永久表存储空间上限。当不指定space_limit时,则不限制。 取值范围:字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以K为单位,且范围不能够超过64比特表示的有符号整数,即1KB~9007199254740991KB。 schema_element 在模式里创建对象的SQL语句。目前仅支持CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION、GRANT子句。 子命令所创建的对象都被AUTHORIZATION子句指定的用户所拥有。 如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH_PATH来查看当前搜索路径上的模式。 在逻辑集群模式下,不支持schema_element,用户需要先创建Schema,再在该Schema中创建对象。
  • 示例 创建一个角色role1: 1 CREATE ROLE role1 IDENTIFIED BY '{password}'; 为用户role1创建一个同名schema,子命令创建的表films和winners的拥有者为role1: 1 2 3 4 CREATE SCHEMA AUTHORIZATION role1 CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL;
  • 语法格式 根据指定的名字创建模式: 1 2 CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] [ WITH PERM SPACE 'space_limit'] [ schema_element [ ... ] ]; 根据用户名创建模式: 1 CREATE SCHEMA AUTHORIZATION user_name [ WITH PERM SPACE 'space_limit'] [ schema_element [ ... ] ];
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表。 如果声明了RECURSIVE,那么允许SELECT子查询通过名字引用它自己。 其中with_query的详细格式为: with_query_name [ ( column_name [, ...] ) ] AS ( {select | values | insert | update | delete} ) – with_query_name指定子查询生成的结果集名字,在查询中可使用该名称访问子查询的结果集。 – column_name指定子查询结果集中显示的列名。 – 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。 plan_hint子句 以/*+ */的形式在关键字后,用于对指定语句块生成的计划进行hint调优,详细用法请参见使用Plan Hint进行调优。 IGNORE 用于主键或者唯一约束冲突时忽略冲突的数据。 详细介绍参见UPSERT。 OVERWRITE 用于标识覆盖式插入方式,使用此种插入方式执行结束后,目标原数据被清空,只存在新插入的数据。 OVERWRITE支持指定列插入的功能,其他列为默认值,若无默认值则为NULL。 OVERWRITE不要和INSERT INTO这类实时写入的操作并发,否则实时写入数据有被意外清理的风险。 OVERWRITE适用于大批量数据导入场景,不建议用于少量数据的插入场景。 避免对同一张表执行并发insert overwrite操作,否则会出现类似报错“tuple concurrently updated.”。 如果集群正在扩缩容,且INSERT OVERWRITE的写入表需要执行数据重分布,则INSERT OVERWRITE会清除当前数据,并自动将插入的数据按扩缩容后的节点来进行数据分布。如果INSERT OVERWRITE和该表的数据重分布过程同时执行,INSERT OVERWRITE会中断该表的数据重分布过程。 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 AS 用于给目标表table_name指定别名。alias即为别名的名字。 column_name 目标表中的字段名: 字段名可以有子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用NULL填充。例如,向一个复合类型中的某些字段插入数据的话,其他字段将是NULL。 目标字段(column_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果value子句和query中只提供了N个字段,则目标字段为前N个字段。 value子句和query提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 expression 赋予对应column的一个有效表达式或值: 向表中字段插入单引号时需要使用单引号自身进行转义。 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE tt01 (id int,content varchar(50)); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE INSERT INTO tt01 values (1,'Jack say ''hello'''); INSERT 0 1 INSERT INTO tt01 values (2,'Rose do 50%'); INSERT 0 1 INSERT INTO tt01 values (3,'Lilei say ''world'''); INSERT 0 1 INSERT INTO tt01 values (4,'Hanmei do 100%'); INSERT 0 1 SELECT * FROM tt01; id | content ----+------------------- 3 | Lilei say 'world' 4 | Hanmei do 100% 1 | Jack say 'hello' 2 | Rose do 50% (4 rows) DEFAULT 对应字段名的缺省值。如果没有缺省值,则为NULL。 query 一个查询语句(SELECT语句),将查询结果作为插入的数据。 ON DUPLICATE KEY 用于主键或者唯一约束冲突时更新冲突的数据。 duplicate_action指定更新列和更新的数据。 详细介绍参见UPSERT。 ON CONFLICT 用于主键或者唯一约束冲突时忽略或者更新冲突的数据。 conflict_target用于指定列名index_column_name 、包含多个列名的表达式index_expression 或者约束名字constraint_name。作用是用于从列名、包含多个列名的表达式或者约束名推断是否有唯一索引。其中index_column_name和index_expression遵循CREATE INDEX的索引列格式。 conflict_action 指定主键或者唯一约束冲突时执行的策略。有两种: DO NOTHING冲突忽略。 DO UPDATE SET冲突更新。 后面指定更新列和更新的数据。 详细介绍参见UPSERT。 RETURNING 返回实际插入的行,RETURNING列表的语法与SELECT的输出列表一致。 output_expression INSERT命令在每一行都被插入之后用于计算输出结果的表达式。 取值范围:该表达式可以使用table的任意字段。可以使用*返回被插入行的所有字段。 output_name 字段的输出名称。 取值范围:字符串,符合标识符命名规范。
  • 语法格式 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 [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT [/*+ plan_hint */] [ IGNORE | OVERWRITE ] INTO table_name [ AS alias ] [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query } [ ON DUPLICATE KEY duplicate_action | ON CONFLICT [ conflict_target ] conflict_action ] [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; where duplicate_action can be: UPDATE { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] and conflict_target can be one of: ( { index_column_name | ( index_expression ) } [ COLLATE collation ] [ opclass ] [, ...] ) [ WHERE index_predicate ] ON CONSTRAINT constraint_name and conflict_action is one of: DO NOTHING DO UPDATE SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ]
  • 注意事项 只有拥有表INSERT权限的用户,才可以向表中插入数据。 如果使用RETURNING子句,用户必须要有该表的SELECT权限。 如果使用QUERY子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 如果使用OVERWRITE子句覆盖式插入数据,用户还需要拥有该表的SELECT和TRUNCATE权限。 当连接到TD兼容的数据库时,td_compatible_truncation参数设置为on时,将启用超长字符串自动截断功能,在后续的insert语句中(不包含外表的场景下),对目标表中char和varchar类型的列上插入超长字符串时,系统会自动按照目标表中相应列定义的最大长度对超长字符串进行截断。 如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。
  • to_date(string, fmt) 描述:将字符串string按fmt指定格式转化为DATE类型的值。fmt格式可参考表2。 该函数不能直接支持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_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_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)
  • to_char (datetime/interval [, fmt]) 描述:将一个DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE或者TIMESTAMP WITH LOCAL TIME ZONE类型的DATETIME或者INTERVAL值按照fmt指定的格式转换为VARCHAR类型。 可选参数fmt可以为以下几类:日期、时间、星期、季度和世纪。每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:HH、MM、SS、YYYY、MM、DD,可参考表2。 模板可以有修饰词,常用的修饰词是FM,可以用来抑制前导的零或尾随的空白。 返回值类型:varchar 示例: 1 2 3 4 5 SELECT to_char(current_timestamp,'HH12:MI:SS'); to_char ---------- 10:19:26 (1 row) 1 2 3 4 5 SELECT to_char(current_timestamp,'FMHH12:FMMI:FMSS'); to_char ---------- 10:19:46 (1 row)
  • to_char (integer/number[, fmt]) 描述:将一个整型或者浮点类型的值转换为指定格式的字符串。 可选参数fmt可以为以下几类:十进制字符、“分组”符、正负号和货币符号,每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:9、0、,(千分隔符)、.(小数点),可参考表1。 模板可以有类似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)
共100000条