PostgreSql 的hash_code函数的用法详解

ostgreSql 实现的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)
 
第一个参数表示需要合并的字段或者表达式。
 
第二个参数表示以什么符号进行将第一个参数进行链接起来,一般都是使用','。
 
第三个参数为可选项,表示将第一列的字段以怎样的排序进行合并。
 
示例:
 
1string_agg(f_b_getusername(r.userid),',' order by r.crt_time desc) as mjxms
 
注:第二个参数与第三个参数之间不需要逗号进行隔离,只需要空格就行,甚至不需要空格!
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章