ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 2013-03-08

2013-03-08

原创 Linux操作系统 作者:feng_luer 时间:2013-03-08 16:42:38 0 删除 编辑

1.去重

根据某一字段去重

select distinct on(a) * from t;

根据某一字段,及字段排序去重

select distinct on(a) * from t order by a,b;

2.将以逗号分隔的字符串转换成数组

v_checkitems_array text[];

v_checkitems_array := string_to_array(v_checkitems,',');

for i in 1..100 loop

   exit when v_checkitems_array[i] is null;

      v_checkitem := v_checkitems_array[i];

end loop;

 

3.函数

。 判断一个字符串里是否包含某个字符,相当于oracle里的instr

Select position( '/' in 'aaa/bbb');

返回结果:4

。  截取字符串,从哪一位开始截取后面的字符串

select substring('avcde;' FROM 3);

返回结果:"cde;"

  。  截取字符串,从那位开始截取多少个字符

select substr('abcd',2,1);

返回结果:"b"

  。    将字符串转换成Data

select  cast( '20120101' as date );

返回结果:"2012-01-01"

  。   时间转换成字符

select cast(now() as text);

返回结果:"2013-03-08 17:14:43.792918+08"

  。  字符转换成数字

select '2'::bigint

返回结果:2

  。  数字转换成字符串

select 1::bpchar;

返回结果:"1"

  。  字返回给出字符串的一个适用于在sql语句字串里当做文本使用的形式

 

select quote_literal('中国')  
返回结果: '中国'
select '中国' 
返回结果: 中国

 4.  函数单列返回多条记录

RETURNS SETOF varchar   RETURNS SETOF int

返回形式

Return next 变量;

…

Renturn next 变量;

Return;

 

 

  返回执行语句多少行

GET DIAGNOSTICS variable = row_count;

通过这个语法可以获得最近一条sql的row_count也可以获得最近一条SQL插入的表的OID;

create table tbl_test(id int,col2 text); insert into tbl_test values (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');

create or replace function f_test (i_1 text)

returns setof int as

$BODY$

declare

v_1 int;

begin

update tbl_test set col2='abcd' ;

GET DIAGNOSTICS v_1 = ROW_COUNT;

return next v_1;

update tbl_test set col2=i_1 where id=1;

GET DIAGNOSTICS v_1 = ROW_COUNT;

return next v_1;

perform. * from tbl_test;

GET DIAGNOSTICS v_1 = ROW_COUNT;

return next v_1;

return;

end;

$BODY$ language plpgsql;

select f_test(‘nihao’); f_test ——– 5 1 5 (3 rows)

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28626489/viewspace-755610/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-02-06

  • 博文量
    3
  • 访问量
    3317