类型转换函数
类型转换函数
- cash_words(money)
示例:
1 2 3 4 5
openGauss=# SELECT cash_words('1.23'); cash_words ----------------------------------- One dollar and twenty three cents (1 row)
- cast(x as y)
示例:
1 2 3 4 5
openGauss=# SELECT cast('22-oct-1997' as timestamp); timestamp --------------------- 1997-10-22 00:00:00 (1 row)
- hextoraw(text)
返回值类型:raw
示例:
1 2 3 4 5
openGauss=# SELECT hextoraw('7D'); hextoraw ---------- 7D (1 row)
- numtoday(numeric)
返回值类型:timestamp
示例:
1 2 3 4 5
openGauss=# SELECT numtoday(2); numtoday ---------- 2 days (1 row)
- rawtohex(string)
结果为输入字符的ACSII码,以十六进制表示。
返回值类型:varchar
示例:
1 2 3 4 5
openGauss=# SELECT rawtohex('1234567'); rawtohex ---------------- 31323334353637 (1 row)
- to_bigint(varchar)
返回值类型:bigint
示例:
1 2 3 4 5
openGauss=# SELECT to_bigint('123364545554455'); to_bigint ---------------- 123364545554455 (1 row)
- to_char(datetime/interval [, fmt])
描述:将一个DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE或者TIMESTAMP WITH LOCAL TIME ZONE类型的DATETIME或者INTERVAL值按照fmt指定的格式转换为VARCHAR类型。
- 可选参数fmt可以为以下几类:日期、时间、星期、季度和世纪。每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:HH、MI、SS、YYYY、MM、DD。
- 模板可以有修饰词,常用的修饰词是FM,可以用来抑制前导的零或尾随的空白。
返回值类型:varchar
示例:
1 2 3 4 5
openGauss=# SELECT to_char(current_timestamp,'HH12:MI:SS'); to_char ---------- 10:19:26 (1 row)
1 2 3 4 5
openGauss=# SELECT to_char(current_timestamp,'FMHH12:FMMI:FMSS'); to_char ---------- 10:19:46 (1 row)
- to_char(double precision/real, text)
返回值类型:text
示例:
1 2 3 4 5
openGauss=# SELECT to_char(125.8::real, '999D99'); to_char --------- 125.80 (1 row)
- to_char(numeric/smallint/integer/bigint/double precision/real[, fmt])
- 可选参数fmt可以为以下几类:十进制字符、“分组”符、正负号和货币符号,每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:9、0、,(千分隔符)、.(小数点)。
- 模板可以有类似FM的修饰词,但FM不抑制由模板0指定而输出的0。
- 要将整型类型的值转换成对应16进制值的字符串,使用模板X或x。
返回值类型:varchar
示例:
1 2 3 4 5
openGauss=# SELECT to_char(1485,'9,999'); to_char --------- 1,485 (1 row)
1 2 3 4 5
openGauss=# SELECT to_char( 1148.5,'9,999.999'); to_char ------------ 1,148.500 (1 row)
1 2 3 4 5
openGauss=# SELECT to_char(148.5,'990999.909'); to_char ------------- 0148.500 (1 row)
1 2 3 4 5
openGauss=# SELECT to_char(123,'XXX'); to_char --------- 7B (1 row)
- to_char(interval, text)
返回值类型:text
示例:
1 2 3 4 5
openGauss=# SELECT to_char(interval '15h 2m 12s', 'HH24:MI:SS'); to_char ---------- 15:02:12 (1 row)
- to_char(integer, text)
返回值类型:text
示例:
1 2 3 4 5
openGauss=# SELECT to_char(125, '999'); to_char --------- 125 (1 row)
- to_char(numeric, text)
返回值类型:text
示例:
1 2 3 4 5
openGauss=# SELECT to_char(-125.8, '999D99S'); to_char --------- 125.80- (1 row)
- to_char(string)
描述:将CHAR、VARCHAR、VARCHAR2、CLOB类型转换为VARCHAR类型。
如使用该函数对CLOB类型进行转换,且待转换CLOB类型的值超出目标类型的范围,则返回错误。
返回值类型:varchar
示例:
1 2 3 4 5
openGauss=# SELECT to_char('01110'); to_char --------- 01110 (1 row)
- to_char(timestamp, text)
返回值类型:text
示例:
1 2 3 4 5
openGauss=# SELECT to_char(current_timestamp, 'HH12:MI:SS'); to_char ---------- 10:55:59 (1 row)
to_char函数对于错误的fmt会原样输出,如fmt为FF10,会匹配到FF1进行格式化输出,然后原样输出0。
- to_clob(char/nchar/varchar/varchar2/nvarchar/nvarchar2/text/raw)
描述:将RAW类型或者文本字符集类型CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR、NVARCHAR2、TEXT转成CLOB类型。
返回值类型:clob
示例:
1 2 3 4 5
openGauss=# SELECT to_clob('ABCDEF'::RAW(10)); to_clob --------- ABCDEF (1 row)
1 2 3 4 5
openGauss=# SELECT to_clob('hello111'::CHAR(15)); to_clob ---------- hello111 (1 row)
1 2 3 4 5
openGauss=# SELECT to_clob('gauss123'::NCHAR(10)); to_clob ---------- gauss123 (1 row)
1 2 3 4 5
openGauss=# SELECT to_clob('gauss234'::VARCHAR(10)); to_clob ---------- gauss234 (1 row)
1 2 3 4 5
openGauss=# SELECT to_clob('gauss345'::VARCHAR2(10)); to_clob ---------- gauss345 (1 row)
1 2 3 4 5
openGauss=# SELECT to_clob('gauss456'::NVARCHAR2(10)); to_clob ---------- gauss456 (1 row)
1 2 3 4 5
openGauss=# SELECT to_clob('World222!'::TEXT); to_clob ----------- World222! (1 row)
- to_date(text)
描述:将文本类型的值转换为指定格式的时间戳。目前只支持两类格式。
- 格式一:无分隔符日期,如20150814,需要包括完整的年月日。
- 格式二:带分隔符日期,如2014-08-14,分隔符可以是单个任意非数字字符。
返回值类型:timestamp without time zone
示例:
1 2 3 4 5
openGauss=# SELECT to_date('2015-08-14'); to_date --------------------- 2015-08-14 00:00:00 (1 row)
- to_date(text, text)
返回值类型:timestamp without time zone
示例:
1 2 3 4 5
openGauss=# SELECT to_date('05 Dec 2000', 'DD Mon YYYY'); to_date --------------------- 2000-12-05 00:00:00 (1 row)
- to_number ( expr [, fmt])
类型转换格式请参考表1。
转换十六进制字符串为十进制数字时,最多支持16个字节的十六进制字符串转换为无符号数。
转换十六进制字符串为十进制数字时,格式字符串中不允许出现除'x'或'X'以外的其他字符,否则报错。
返回值类型:number
示例:
1 2 3 4 5
openGauss=# SELECT to_number('12,454.8-', '99G999D9S'); to_number ----------- -12454.8 (1 row)
- to_number(text, text)
返回值类型:numeric
示例:
1 2 3 4 5
openGauss=# SELECT to_number('12,454.8-', '99G999D9S'); to_number ----------- -12454.8 (1 row)
- to_timestamp(double precision)
返回值类型:timestamp with time zone
示例:
1 2 3 4 5
openGauss=# SELECT to_timestamp(1284352323); to_timestamp ------------------------ 2010-09-13 12:32:03+08 (1 row)
- to_timestamp(string [,fmt])
描述:将字符串string按fmt指定的格式转换成时间戳类型的值。不指定fmt时,按参数nls_timestamp_format所指定的格式转换。
GaussDB的to_timestamp中,
- 如果输入的年份YYYY=0,系统报错。
- 如果输入的年份YYYY<0,在fmt中指定SYYYY,则正确输出公元前绝对值n的年份。
fmt中出现的字符必须与日期/时间格式化的模式相匹配,否则报错。
返回值类型:timestamp without time zone
示例:
1 2 3 4 5 6 7 8 9 10 11
openGauss=# SHOW nls_timestamp_format; nls_timestamp_format ---------------------------- DD-Mon-YYYY HH:MI:SS.FF AM (1 row) openGauss=# SELECT to_timestamp('12-sep-2014'); to_timestamp --------------------- 2014-09-12 00:00:00 (1 row)
1 2 3 4 5
openGauss=# SELECT to_timestamp('12-Sep-10 14:10:10.123000','DD-Mon-YY HH24:MI:SS.FF'); to_timestamp ------------------------- 2010-09-12 14:10:10.123 (1 row)
1 2 3 4 5
openGauss=# SELECT to_timestamp('-1','SYYYY'); to_timestamp ------------------------ 0001-01-01 00:00:00 BC (1 row)
1 2 3 4 5
openGauss=# SELECT to_timestamp('98','RR'); to_timestamp --------------------- 1998-01-01 00:00:00 (1 row)
1 2 3 4 5
openGauss=# SELECT to_timestamp('01','RR'); to_timestamp --------------------- 2001-01-01 00:00:00 (1 row)
- to_timestamp(text, text)
返回值类型:timestamp
示例:
1 2 3 4 5
openGauss=# SELECT to_timestamp('05 Dec 2000', 'DD Mon YYYY'); to_timestamp --------------------- 2000-12-05 00:00:00 (1 row)
模式 |
描述 |
---|---|
9 |
带有指定数值位数的值。 |
0 |
带前导零的值。 |
.(句点) |
小数点。 |
,(逗号) |
分组(千)分隔符。 |
PR |
尖括号内负值。 |
S |
带符号的数值(使用区域设置)。 |
L |
货币符号(使用区域设置)。 |
D |
小数点(使用区域设置)。 |
G |
分组分隔符(使用区域设置)。 |
MI |
在指明的位置的负号(如果数字 < 0)。 |
PL |
在指明的位置的正号(如果数字 > 0)。 |
SG |
在指明的位置的正/负号。 |
RN |
罗马数字(输入在 1 和 3999 之间)。 |
TH或th |
序数后缀。 |
V |
移动指定位(小数)。 |
- bpchar_to_smalldatetime
参数:character
返回值类型:smalldatetime
- complex_array_in
描述:将外部complex_array类型转化为内部anyarray数组类型。
参数:cstring, oid, int2vector
返回值类型:anyarray
- date_bpchar
参数:date
返回值类型:character
- date_text
参数:date
返回值类型:text
- date_varchar
参数:date
返回值类型:character varying
- f4toi1
参数:real
返回值类型:tinyint
- f8toi1
参数:double precision
返回值类型:tinyint
- float4_bpchar
参数:real
返回值类型:character
- float4_text
参数:real
返回值类型:text
- float4_varchar
参数:real
返回值类型:character varying
- float8_text
参数:double precision
返回值类型:text
- float8_varchar
参数:double precision
返回值类型:character varying
- i1tof4
参数:tinyint
返回值类型:real
- i1tof8
参数:tinyint
返回值类型:double precision
- i1toi2
参数:tinyint
返回值类型:smallint
- i1toi8
参数:tinyint
返回值类型:bigint
- i2toi1
参数:smallint
返回值类型:tinyint
- i4toi1
参数:integer
返回值类型:tinyint
- i8toi1
参数:bigint
返回值类型:tinyint
- int1_avg_accum
描述:将第二个uint8类型参数,加入到第一个参数中,一个参数为bigint类型数组。
参数:bigint[], tinyint
返回值类型:bigint[]
- int1_bool
参数:tinyint
返回值类型:boolean
- int1_bpchar
参数:tinyint
返回值类型:character
- int1_mul_cash
描述:返回一个int8类型参数和一个cash类型参数的乘积,返回值为cash类型。
参数:tinyint, money
返回值类型:money
- int1_numeric
参数:tinyint
返回值类型:numeric
- int1_nvarchar2
参数:tinyint
返回值类型:nvarchar2
- int1in
参数:cstring
返回值类型:tinyint
- int1out
参数:tinyint
返回值类型:cstring
- int1up
参数:tinyint
返回值类型:tinyint
- int2_bool
参数:smallint
返回值类型:boolean
- int2_bpchar
参数:smallint
返回值类型:character
- int2_text
参数:smallint
返回值类型:text
- int2_varchar
参数:smallint
返回值类型:character varying
- int4_bpchar
参数:integer
返回值类型:character
- int4_text
参数:integer
返回值类型:text
- int4_varchar
参数:integer
返回值类型:character varying
- int8_bool
参数:bigint
返回值类型:boolean
- int8_bpchar
参数:bigint
返回值类型:character
- int8_text
参数:bigint
返回值类型:text
- int8_varchar
参数:bigint
返回值类型:character varying
- intervaltonum
参数:interval
返回值类型:numeric
- numeric_bpchar
参数:numeric
返回值类型:character
- numeric_int1
参数:numeric
返回值类型:tinyint
- numeric_text
参数:numeric
返回值类型:text
- numeric_varchar
参数:numeric
返回值类型:character varying
- nvarchar2in
参数:cstring, oid, integer
返回值类型:nvarchar2
- nvarchar2out
参数:nvarchar2
返回值类型:cstring
- nvarchar2send
参数:nvarchar2
返回值类型:bytea
- oidvectorin_extend
参数:cstring
返回值类型:oidvector_extend
- oidvectorout_extend
参数:oidvector_extend
返回值类型:cstring
- oidvectorsend_extend
参数:oidvector_extend
返回值类型:bytea
- reltime_text
参数:reltime
返回值类型:text
- text_date
参数:text
返回值类型:date
- text_float4
参数:text
返回值类型:real
- text_float8
参数:text
返回值类型:double precision
- text_int1
参数:text
返回值类型:tinyint
- text_int2
参数:text
返回值类型:smallint
- text_int4
参数:text
返回值类型:integer
- text_int8
参数:text
返回值类型:bigint
- text_numeric
参数:text
返回值类型:numeric
- text_timestamp
参数:text
返回值类型:timestamp without time zone
- time_text
参数:time without time zone
返回值类型:text
- timestamp_text
参数:timestamp without time zone
返回值类型:text
- timestamp_to_smalldatetime
描述:timestamp类型转换为smalldatetime类型。
参数:timestamp without time zone
返回值类型:smalldatetime
- timestamp_varchar
参数:timestamp without time zone
返回值类型:character varying
- timestamptz_to_smalldatetime
描述:timestamptz类型转换为smalldatetime。
参数:timestamp with time zone
返回值类型:smalldatetime
- timestampzone_text
参数:timestamp with time zone
返回值类型:text
- timetz_text
参数:time with time zone
返回值类型:text
- to_integer
参数:character varying
返回值类型:integer
- to_interval
参数:character varying
返回值类型:interval
- to_numeric
参数:character varying
返回值类型:numeric
- to_nvarchar2
参数:numeric
返回值类型:nvarchar2
- to_text
参数:smallint
返回值类型:text
- to_ts
参数:character varying
返回值类型:timestamp without time zone
- to_varchar2
参数:timestamp without time zone
返回值类型:character varying
- varchar_date
参数:character varying
返回值类型:date
- varchar_float4
参数:character varying
返回值类型:real
- varchar_float8
参数:character varying
返回值类型:double precision
- varchar_int4
参数:character varying
返回值类型:integer
- varchar_int8
参数:character varying
返回值类型:bigint
- varchar_numeric
参数:character varying
返回值类型:numeric
- varchar_timestamp
参数:character varying
返回值类型:timestamp without time zone