PostgreSql 的hash_code函數的用法說明
PostgreSql 實現的hash_code 函數與java hash_code方法一致
CREATE FUNCTION hash_code(text) RETURNS integer LANGUAGE plpgsql AS $$ DECLARE i integer := 0; DECLARE h bigint := 0; BEGIN FOR i IN 1..length($1) LOOP h = (h * 31 + ascii(substring($1, i, 1))) & 4294967295; END LOOP; RETURN cast(cast(h AS bit(32)) AS int4); END; $$;
補充:PGSQL的某些常用函數
一、COALESCE(col,value);
COALESCE函數的作用是空值替換函數,即當某列的值為空時,則可用其他值進行替換,再返回給前端。
eg:COALESCE(totalnum,0);即當字段名為totalnum的列的值為空時,則用0進行替換,進行替換的值可根據實際情況可用number類型,也可用varchar類型等。
二、regexp_split_to_table(col,’,’);
regexp_split_to_table函數的作用是利用正則表達式將字符串分割成表格。即將對指定列的值進行分割,分割後的每個子串將轉成一行,多個子串將轉成多行。如下圖所示:
因此鑒於以上的功能,在實際開發中可以用於多類型,多狀態或者多形式的條件查詢,例如–如下圖所示:
其中的’00,10,11,98’是可以由前端傳過來封裝好的字符串變量,這種做法比用循環取出,再封裝成”’00’,’10’,’11’,’98′”這種形式的字符串方便瞭許多。
三、regexp_split_to_array(col,’,’);
regexp_split_to_array是將某一字段的值以特定的符號進行分割後轉換為數組的格式,入下圖所示
四、string_agg
直接把一個表達式或者某一列的字段合並變成字符串
格式–string_agg(expression,delimiter order by expression)
第一個參數表示需要合並的字段或者表達式。
第二個參數表示以什麼符號進行將第一個參數進行鏈接起來,一般都是使用’,’。
第三個參數為可選項,表示將第一列的字段以怎樣的排序進行合並。
示例:
string_agg(f_b_getusername(r.userid),',' order by r.crt_time desc) as mjxms
註:第二個參數與第三個參數之間不需要逗號進行隔離,隻需要空格就行,甚至不需要空格!
五、substring(string [from int] [for int])
substring('abcdefg' from 2 for 3) = bcd
第一個參數是需要被截取的字符串,第二個參數是從第幾位開始截取,起始位置是1,第三個參數表示截取的長度。
六、獲取當前日期是星期幾
SELECT extract(dow FROM cast(now() as TIMESTAMP))
將dow換成day就是獲取當前日期是當前月份的第幾天
七、將日期轉換成 INTERVAL 格式
select age('2019-10-10','2018-04-19')
可計算兩個日期之間相差多少日期
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- PostgreSQL 字符串處理與日期處理操作
- MySQL查詢字段實現字符串分割split功能的示例代碼
- PostgreSQL 對數組的遍歷操作
- Postgresql 存儲過程(plpgsql)兩層for循環的操作
- PostgreSQL 實現將多行合並轉為列