字符操作函数
-
length(string bytea, encoding name )
描述:指定encoding编码格式的string的字符数。在这个编码格式中,string必须是有效的。
返回值类型:int
SELECT length('jose', 'UTF8'); /* length -------- 4 (1 row) */
-
substring(string [from int] [for int])
描述:截取子字符串,from int表示从第几个字符开始截取,for int表示截取几个字节。
返回值类型:text
-- 从第二个开始截取 共截取三个 SELECT substring('Thomas' from 2 for 3); /* substring ----------- hom (1 row) */ -- 正则截取 SELECT substring('Thomas of' from '.+om'); /* substring ----------- Thom (1 row) */
-
repeat(string text, number int )
描述:将string重复number次。
返回值类型:text
SELECT repeat('hei',2); /* repeat -------- heihei (1 row) */
-
replace(string text, from text, to text)
描述:把字符串string里出现地所有子字符串from的内容替换成子字符串to的内容。
返回值类型:text
SELECT replace('abcdefabcdef', 'cd', 'XXX'); /* replace ---------------- abXXXefabXXXef (1 row) */
-
reverse(string text)
描述:字符串反转
返回值类型:text
SELECT reverse('abcdefg'); /* reverse --------- gfedcba (1 row) */
-
substr(string,from)
描述:
从参数string中抽取子字符串。
from表示抽取的起始位置。
- from为0时,按1处理。
- from为正数时,抽取从from到末尾的所有字符。
- from为负数时,抽取字符串的后n个字符,n为from的绝对值。
返回值类型:varchar
SELECT substr('ABCDEF',2); /* substr -------- BCDEF (1 row) */ SELECT substr('ABCDEF',-2); /* substr -------- EF (1 row) */
-
upper(string)
描述:把字符串转化为大写。
返回值类型:varchar
SELECT upper('tom'); /* upper ------- TOM (1 row) */
-
Lower(string)
描述:把字符串转化为小写。
返回值类型:varchar
SELECT lower('TOM'); /* lower ------- tom (1 row) */
-
concat(str1,str2)
描述:将字符串str1和str2连接并返回。
返回值类型:varchar
SELECT concat('Hello', ' World!'); /* concat -------------- Hello World! (1 row) */ SELECT concat('Hello', ' World!',null); /* concat -------------- Hello World! (1 row) */
-
concat_ws(sep text, str"any" [, str"any" [, ...] ])
描述:以第一个参数为分隔符,链接第二个以后的所有参数。
返回值类型:text
SELECT concat_ws('_','Hello', 'World'); /* concat_ws ------------- Hello_World (1 row) */ SELECT concat_ws('_','Hello', 'World',null); /* concat_ws ------------- Hello_World (1 row) */
-
md5(string)
描述:将string使用MD5加密,并以16进制数作为返回值。
返回值类型:text
SELECT md5('ABC'); /* md5 ---------------------------------- 902fbdd2b1df0c4f70b4a5d23525e932 (1 row) */
时间日期函数
-
age(timestamp, timestamp)
描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负。
返回值类型:interval
SELECT age(timestamp '2001-04-10', timestamp '1957-06-13'); /* age ------------------------- 43 years 9 mons 27 days (1 row) */
-
age(timestamp)
描述:当前时间和参数相减。
返回值类型:interval
SELECT age(timestamp '1957-06-13'); /* age -------------------------- 63 years 11 mons 26 days (1 row) */
-
clock_timestamp()
描述:实时时钟的当前时间戳。
返回值类型:timestamp with time zone
SELECT clock_timestamp(); /* clock_timestamp ------------------------------- 2021-06-09 01:24:36.726657-07 (1 row) */
-
current_date
描述:当前日期。
返回值类型:date
SELECT current_date; /* date ------------ 2021-06-09 (1 row) */
-
current_time
描述:当前时间。
返回值类型:time with time zone
SELECT current_time; /* timetz -------------------- 01:26:04.553669-07 (1 row) */
-
current_timestamp
描述:当前日期及时间。
返回值类型:timestamp with time zone
SELECT current_timestamp; /* pg_systimestamp ------------------------------- 2021-06-09 01:26:55.812076-07 (1 row) */
-
date_part(text, timestamp)
描述:获取小时的值。
等效于extract(field from timestamp)。
返回值类型:double precision
SELECT date_part('hour', timestamp '2001-02-16 20:38:40'); /* date_part ----------- 20 (1 row) */ SELECT date_part('day', timestamp '2001-02-16 20:38:40'); /* date_part ----------- 16 (1 row) */ SELECT date_part('month', timestamp '2001-02-16 20:38:40'); /* date_part ----------- 2 (1 row) */ SELECT date_part('year', timestamp '2001-02-16 20:38:40'); /* date_part ----------- 2001 (1 row) */
-
trunc(timestamp)
描述:默认按天截取。
trunc(float)的时候则为取整数部分(不进行四舍五入计算)
SELECT trunc(timestamp '2001-02-16 20:38:40'); /* trunc --------------------- 2001-02-16 00:00:00 (1 row) */ SELECT trunc(1.522); /* trunc ------- 1 (1 row) */
-
localtime
描述:当前时间。
返回值类型:time
SELECT localtime; /* time ----------------- 01:46:21.961536 (1 row) */
-
localtimestamp
描述:当前日期及时间。
返回值类型:timestamp
SELECT localtimestamp; /* timestamp ---------------------------- 2021-06-09 01:46:13.423419 (1 row) */