1. 程式人生 > >PostgreSQL學習筆記(四):運算子&函式

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));