sql常用格式化函數及字符串函數
一.常用格式化函數
1.日期轉字符串
select to_char(current_timestamp, ‘YYYY-MM-DD HH24:MI:SS‘) //2017-09-18 22:41:50
YYYY:年(4和更多位)
MM:月份號(01-12)
DD:一個月裏的日(01-31)
HH24:一天的小時數(00-23)
MI:分鐘(00-59)
SS:秒(00-59)
2.字符串轉日期
select to_date(‘2017-09-18‘,‘YYYY-MM-DD‘) //2017-09-18,to_date函數返回日期
select to_timestamp(‘2017-09-18 22:41:50‘,‘YYYY-MM-DD HH24:MI:SS‘) //2017-09-18 22:41:50,to_timestamp函數返回日期時間
3.數字轉字符串
select 123.45 || ‘‘ //得到‘123.45‘字符串
4.字符串轉數字
select ‘123.45‘ :: numeric num //得到123.45,java類型為BigDecimal類型
select ‘123.45‘ :: double precision num //得到123.45,java類型為Double類型
:: numeric 及 :: double precision 可以轉換 null,但不能轉換空字符串(sql會報錯)
select null :: numeric num //得到null
select null :: double precision num //得到null
二.常用字符串函數
1.字符串拼接
select ‘ab‘ || ‘c‘ //得到‘abc‘字符串
2.字串裏二進制位的個數(1個字節等於8位)
select bit_length(‘abc‘) //得到24
1個英文字符占1個字節,3個英文字符占3個字節,24位
select bit_length(‘中國人‘) //得到72
1個中文字符占3個字節,3個中文字符占9個字節,72位
3.字符串的長度
select length(‘abc‘) //得到3
select length(‘中國人‘) //得到3
4.字符串替換
按索引位置替換:
select overlay(‘Txxas‘ placing ‘om‘ from 2 for 2) //得到’Tomas‘字符串
overlay本身就是“覆蓋“的意思
from後面的整數表示索引,從哪裏開始替換。這裏的索引從1開始,即第一個字符索引為1。如果from省略的話,表示從第一個字符開始替換
for後面的整數表示替換多少個字符。for不能省略
按字符串匹配替換:
select replace(‘Txxas‘, ‘xx‘, ‘om‘) //得到‘Tomas‘字符串
如果可以匹配到多個子字符串,則會全部替換
5.取子字符串的位置
select position(‘om‘ in ‘Thomas‘) //得到3
如果返回0,則表示不存在此子字符串。
6.取子字符串
select substring(‘Tomas‘ from 2 for 2) //得到‘om‘字符串
from和for的含義同overlay()函數的一樣
7.刪除字符串的開頭/結尾/兩邊的某字符,返回剩下的字符串
select trim([leading | trailing | both] ‘x‘ from ‘xabcx‘) //如果是leading的話,得到‘abcx‘字符串;如果是trailing的話,得到‘xabc‘字符換;如果是both或者不寫的話,得到‘abc‘字符串
select trim(‘ abc ‘) //刪除兩邊的空字符,得到‘abc‘字符串
8.字符串分割
select split_part(‘ab,bc,cd,de‘, ‘,‘, 1) //得到‘ab‘字符串
將‘ab,bc,cd,de‘字符串按逗號分割,返回第1個字符串。
以上函數對postgresql是兼容的。
sql常用格式化函數及字符串函數