PostgreSQL學習筆記(四):運算符&函數

1 運算符&函數

1.1 運算符

1.1.1 算數運算符

| ---------------- | ---------- |
| + | 加 |
| - | 減 |
| * | 乘 |
| / | 除 |
| % | 求餘 |

1.1.2 關係運算符

運算符 作用
=
<> (!=)
>
>=
<
<=
LEAST 返回最小值
GREATEST 返回最大值
IN/NOT IN
BETWEEN…AND…
LIKE

1.1.3 邏輯運算符

運算符 作用
NOT
AND
OR

1.2 函數

1.2.1 數學函數

函數 說明
ABS(X) 絕對值
PI(x) 圓周率
SQRT(X) 平方根
MOD(X,Y) 求餘
CEIL(X) 不小於X的最小整數
FLOOR(X) 不大於X的最大整數
ROUND(X)/ROUND(X,Y) 四捨五入,如果Y有值,保留Y小數位
POWER(X,Y) X的Y次方

1.2.2 字符串函數

函數 說明
CHAR_LENGTH(STR) 獲取字符串長度
LENGTH(STR) 獲取字符串字節長度。一個漢字3字節,數字字母1字節
CONCAT(STR1,STR2,…) 連接字符串
CONCAT_WS(WS,STR1,STR2,…) 連接字符串,字符串中間中間用ws的值連接
LEFT(STR,N) 獲取str從左數n長度的字符串,n從1開始
RIGHT(STR,N) 獲取str從右數n長度的字符串,n從1開始
LPAD(STR,N,PADSTR) 左補白,如果str不滿n長度,則在左邊補上字符串
RPAD(STR,N,PADSTR) 右補白,如果str不滿n長度,則在右邊補上字符串
TRIM(STR)/RTRIM(STR)/LTRIM(STR) 去除空白
REPEAT(STR,N) 重複n次形成的字符串
REPLACE(STR,BEFORESTR,AFTERSTR) 替換字符串
SUBSTRING(STR,N,LEN) 從str中第n個位置開始截取len長度的字符串

1.2.3 日期和時間

  • 獲取當前時間

    select current_time;--帶時區
    select localtime;--不帶時區
    
  • 獲取當前日期+時間

    select current_timestamp;
    select localtimestamp;
    select now();
    
  • 提取日期中的日子

    select extract(day from timestamp '2018-12-21 12:00:00');
    
  • 提取日期中的月份

    select extract(month from timestamp '2018-12-21 12:00:00');
    
  • 提取日期中的年份

    select extract(year from date '2012-12-12');
    
  • 提取日期是一年中第幾天

    select extract(doy from date '2012-12-12');
    
  • 提取日期是一週中的星期幾

    select extract(dow from date '2012-12-12');
    
  • 提取日期是第幾個季度

    select extract(quarter from date '2012-12-12');
    
  • 計算日期+/-間隔天數

    select date '2012-12-12' + integer '10';
    
  • 計算日期+/-間隔小時

    select date '2012-12-12' + interval '10 hour';
    
  • 計算日期+/-指定時間

    select date '2012-12-12' + time '06:00'
    
  • 計算日期時間+/-間隔時間

    select timestamp '2012-12-12 12:00:01' + interval '10 hours';
    
  • 計算兩個日期之間的間隔天數

    select date '2012-12-12' - date '2012-10-12';
    

1.2.4 條件表達式

  • CASE VALUE WHEN V1 THEN R1 [WHEN V2 THEN R2][...][ELSE RN] END

    類似於Oracle的decode函數,如果v1=value,返回r1;如果v2=value,返回r2;否則返回rn。

  • case when v1 then r1 [when v2 then r2][...][else rn] end

    和java的case相同。

1.2.5 系統函數

  • 獲取當前登陸用戶名

    select user,current_user;
    
  • md5加密

    select md5('hello world');
    
  • encode加密

    select encode('hello world','123456');
    

    123456是加密編碼

  • decode解密

    select decode(encode('hello world','123456'),'123456');
    
  • 數據類型轉換

    select cast(100 as varchar(12));
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章