字符串长度、大小写
1
2
3
4
5
6
7
|
SELECT CHAR_LENGTH( 'test' ) -- 字符串长度
SELECT LENGTH( 'test' )
LENGTH(string,encoding name )
SELECT LENGTH( '测试' , 'UTF-8' );
LOWER (string) 或者 UPPER (string) -- 大小写
ASCII(string)
SELECT ASCII( 'abc' ) -- 结果是'a'的ascii码
|
字符串格式化
1
|
FORMAT(formatstr text [,formatarg "any" [, ...] ]) -- 类似于printf
|
字符串拼接
1
2
3
4
|
SELECT 'number' || 123 --字符串连接
CONCAT(str "any" [, str "any" [, ...] ])
CONCAT_WS(sep text, str "any" [,str "any" [, ...] ])
SELECT * FROM CONCAT_WS( '#' , 'hello' , 'world' )
|
字符串剪切与截取
1
2
3
4
5
6
7
8
9
10
11
12
13
|
LPAD(string text, length int [,fill text])
RPAD(string text, length int [,fill text])
SELECT LPAD( '12345' , 10, '0' ) -- 结果 "0000012345"
TRIM([leading | trailing | both] [characters] from string)
SELECT TRIM(both ' ' from ' hello world' ) -- 结果是'hello world'
BTRIM(string text [, characters text])
RTRIM(string text [, characterstext])
LTRIM(string text [, characterstext])
SELECT BTRIM( 'yyhello worldyyyy' , 'y' ) -- 结果是'hello world'
LEFT (str text, n int ) -- 返回字符串前n个字符,n为负数时返回除最后|n|个字符以外的所有字符
RIGHT (str text, n int )
SUBSTRING (string from int [ for int ])
SELECT SUBSTRING ( 'hello world' from 7 for 5) -- 结果是'world'
|
字符串加引号
1
2
3
4
5
|
QUOTE_IDENT(string text)
QUOTE_LITERAL(STRING TEXT)
QUOTE_LITERAL(value anyelement)
SELECT 'l' 'host"' -- 结果是'l'host"'
SELECT QUOTE_LITERAL('l '' host "') -- 结果是'l''host" '
|
字符串分割
1
2
3
4
5
6
|
SPLIT_PART(string text,delimiter text, field int )
REGEXP_SPLIT_TO_ARRAY(stringtext, pattern text [, flags text])
REGEXP_SPLIT_TO_TABLE(stringtext, pattern text [, flagstext])
SELECT SPLIT_PART( 'hello#world' , '#' ,2) -- 结果是'world'
SELECT REGEXP_SPLIT_TO_ARRAY( 'hello#world' , '#' ) -- 结果是{hello,world}
SELECT REGEXP_SPLIT_TO_TABLE( 'hello#world' , '#' ) as split_res -- 结果是两行,第一行hello,第二行world
|
字符串查找、反转与替换
1
2
3
4
5
6
7
8
9
10
|
POSITION( substring in string) -- 查找
SELECT POSITION( 'h' in 'hello world' ) -- 结果是1,这里从1开始计数
REVERSE(str)
REPEAT(string text, number int )
REPLACE (string,string,string)
SELECT REPLACE ( 'hello world' , ' ' , '#' )
REGEXP_MATCHES(string text,pattern text [, flags text])
REGEXP_REPLACE(string text,pattern text,replacement text[, flags text])
SELECT REGEXP_MATCHES( 'hello world' , '.o.' , 'g' ) -- 返回两行,第一行是'lo ',第二行是'wor'
SELECT REGEXP_MATCHES( 'hello world' , '.o.' ) -- 返回第一个匹配,'lo '
|
时间处理
1
2
|
SELECT TO_CHAR(TO_TIMESTAMP(CREATE_TIME), 'YYYY-MM-DD HH24:MI:SS' )
SELECT EXTRACT( YEAR FROM NOW());
|
补充:postgresql处理时间函数 截取hh:mm/yyyy-mm-dd
1.to_timestamp:
1
|
AND to_timestamp(a.upload_time, 'yyyy-MM-dd' )>= '"+startTime+"' and to_timestamp(a.upload_time, 'yyyy-MM-dd' ) <= '"+endTime+"'
|
2.substring:
1
|
substring ( '2019-04-08 14:18:09' , index ,k):
|
数值代表含义 index:代表从index开始截取数据,k代表从index开始截取到第k个数据
处理对象:时间为字符串格式的数据
eg:
截取时间到 年-月-日:
1
|
SELECT substring (upload_time,1,10) from table WHERE upload_time= '2019-04-08 14:18:09'
|
结果:2019-04-08
截取时间到 时:分:
1
|
SELECT substring (upload_time,12,5) from table WHERE upload_time= '2019-04-08 14:18:09'
|
结果:14:18
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/whgyxy/article/details/98500281