|| 實現sql的字符串的連接
拼接字符串:
select shejdd || shijdd||qujdd||hddd dd from table_name;
查詢表中的shejdd,shijdd,qujdd,hddd字段將查詢結果拼接爲一個叫dd的字段
例子:
select 'hello'||'world'||' ABC';
結果:helloworld ABC
sql實現手機號脫敏
select substring('12312345678',1,3) ||'****'||substring('12312345678',8,4) as sjhm;
結果:123****5678
substring(str,index,length);
str表示需要被分割的字符串
index表示下標,默認從下標1開始
length表示需要分割的字符串的長度
sql使用正則表達式替換掉查詢中的指定文字
select regexp_replace (regexp_replace('山東省濟南市歷下區', '^山東省', ''),'區$','');
結果:濟南市歷下
regexp_replace(text,pattern text,replacement text);
介紹:將匹配POSIX正則表達式的子串替換爲新文本的功能。若沒有匹配pattern text,返回原字符串。若匹配,則返回的text串裏面的被匹配的字符串將被replacement text替換後的字符串。
按照每小時統計數據表某段時間數據變化量
select to_char(fwsj,'yyyy-mm-dd hh24'),count(*) from table_name
where fwsj>'2020-03-06 12:00:00' and fwsj <now()
GROUP BY to_char(fwsj,'yyyy-mm-dd hh24')
order by to_char(fwsj,'yyyy-mm-dd hh24') asc;
將日期轉爲時間戳
SELECT EXTRACT(epoch FROM CAST('2017-12-06 00:17:10' AS TIMESTAMP));
結果:1512519430
作用:可用作查詢條件來比較時間大小
時間戳轉日期
SELECT TO_TIMESTAMP(1512490630);
結果:2017-12-06 00:17:10+08
這種轉化的日期最後會帶上時區
to_date(text,text)說明,轉日期不帶時間
select to_date('2019-01-15 18:33:41','yyyy-MM-dd hh24:mi:ss');
結果爲:2019-01-15
將字符串轉爲年月日的日期,不包含時分秒
::的使用說明
例子1:
select '123'::NUMERIC as number;
結果1:
例子2:
select '123' as number;
對比看出:
例子1是數字的123,例子2是文本的123。
::作用:
將一種類型的常量轉化成指定類型的常量
例子1等價於以下兩種寫法
select cast('123' as NUMERIC);
select NUMERIC'123';
當然如果是’123a’這種不能轉換的,SQL會報錯
::NUMERIC實現兩個整型數字的相除,四捨五入保留指定的小數位
錯誤用法:
select round(400/300,4);
結果爲:1
兩個integer類型的數字相除,結果保留整數部分
正確用法:
select round(400::NUMERIC/300::NUMERIC,4);
結果爲:1.3333
轉化成浮點數,相除的結果爲浮點數