sql常用格式化函数及字符串函数

  • 格式:pdf
  • 大小:61.42 KB
  • 文档页数:2

sql常⽤格式化函数及字符串函数

⼀.常⽤格式化函数1.⽇期转字符串

mysql:date_format()函数

select date_format(now(), '%Y-%m-%d %H:%i:%s');

%Y:年份

%m:⽉份号(01-12)

%d:⼀个⽉⾥的⽇(01-31)

pg:to_char()函数

select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS');

YYYY:年份

MM:⽉份号(01-12)

DD:⼀个⽉⾥的⽇(01-31)

HH24:⼀天的⼩时数(00-23)

MI:分钟(00-59)

SS:秒(00-59)

格式化格式可以由以上英⽂字母任意搭配,如可以是'YYYY-MM-DD HH24:MI:SS',也可以是'YYYY-MM-DD',也可以是'YYYYMMDD'。2.字符串转⽇期

mysql:str_to_date()函数

select str_to_date('2017-09-18', '%Y-%m-%d %H:%i:%s');

select str_to_date('2017-09-18 12:08:35', '%Y-%m-%d %H:%i:%s');

pg:

select to_date('2017-09-18','YYYY-MM-DD');

select to_timestamp('2017-09-18 22:41:50','YYYY-MM-DD HH24:MI:SS');

待解析的字符串可以包含时分秒,也可以不包含时分秒。

解析格式同样可以任意指定。to_date只会取到⽇期,不会取到时分秒,时间是该⽇的0点0分0秒,⽽不管待解析的字符串中时分秒是什么。

to_timestamp会取到具体时分秒,如果待解析的字符串中只有⽇期,没有时分秒,则时间也是该⽇的0点0分0秒。

3、⽇期转时间戳

3.数字转字符串

select 123.45 || '' //pg得到'123.45'字符串,mysql得到1。为啥??

select to_char(123.5, '999999999999.9') //得到'123.5'

select to_char(123.5 , '9999999999999') //得到'124'

4.字符串转数字

select '123.45' :: numeric num //pg得到123.45,java类型为BigDecimal类型

select '123.45' :: double precision num //pg得到123.45,java类型为Double类型

:: numeric 及 :: double precision 可以转换 null,但不能转换空字符串(sql会报错)select null :: numeric num //pg得到null

select null :: double precision num //pg得到null

⼆.常⽤字符串函数1.字符串拼接

select 'ab' || 'c' //pg得到'abc'字符串,mysql得到0。为啥??

2.字串⾥⼆进制位的个数(1个字节等于8位)

select bit_length('abc') //pg和mysql都得到24

1个英⽂字符占1个字节,3个英⽂字符占3个字节,24位

select bit_length('中国⼈') //pg和mysql都得到72

1个中⽂字符占3个字节,3个中⽂字符占9个字节,72位

3.字符串的长度

select length('abc') //pg和mysql都得到3

select length('中国⼈') //pg得到3,mysql得到9。想要得到3,则需要⽤char_length函数

4.字符串替换

按索引位置替换:select overlay('Txxas' placing 'om' from 2 for 2) //pg得到’Tomas‘字符串。mysql不⽀持

overlay本⾝就是“覆盖“的意思。from后⾯的整数表⽰索引,从哪⾥开始替换。这⾥的索引从1开始,即第⼀个字符索引为1。如果from省略的话,表⽰从第⼀个字符开始替换。for后⾯的整数表⽰替换多少个字符,for不能省略。

按字符串匹配替换:select replace('Txxas', 'xx', 'om') //pg和mysql都得到'Tomas'字符串

如果可以匹配到多个⼦字符串,则会全部替换5.取⼦字符串的位置

select position('om' in 'Thomas') //pg和mysql都得到3

如果返回0,则表⽰不存在此⼦字符串。6.取⼦字符串

select substring('Tomas' from 2 for 2) //pg和mysql都得到'om'字符串

from和for的含义同overlay()函数的⼀样

7.删除字符串两边的空格

select trim(' abc ') //pg和mysql都得到'abc'字符串