首页 > Linux操作系统 > Linux操作系统 > 2013-03-08
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/ ,如需转载,请注明出处,否则将追究法律责任。