postgresql SQL语句变量的使用说明

 更新时间:2021年01月16日 11:22:42   作者:dazuiba008  
这篇文章主要介绍了postgresql SQL语句变量的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一般变量使用我们都是放在函数里面,这里开发需求,要在SQL直接使用变量,方便查找一些问题,比如时间变量,要根据时间进行筛选

这里有三种方法可以实现

1.psql命令使用变量

表数据如下:

hank=> select * from tb2;
 c1 | c2  |       c3       
----+-------+----------------------------
 1 | hank | 2018-02-06 10:08:00.787503
 2 | dazui | 2018-02-06 10:08:08.542481
 3 | wahah | 2018-02-06 10:08:15.468527
 4 | aaaaa | 2018-02-06 10:18:39.289523

SQL文本如下

cat hank.sql 
select * from tb2 where c2=:name and c3>=:time;

通过psql查看

psql -v name="'hank'" -v time="'2018-02-06 10:08:00'" -f hank.sql
 c1 | c2 |       c3       
----+------+----------------------------
 1 | hank | 2018-02-06 10:08:00.787503

或者

 psql -v name="'hank'" -v time="'2018-02-06 10:08:00'" -c '\i hank.sql'
 c1 | c2 |       c3       
----+------+----------------------------
 1 | hank | 2018-02-06 10:08:00.787503

效果一样

2.\set使用变量

hank=> \set name hank
hank=> \set time '2018-02-06 10:09:00'  
hank=> select * from tb2 where c2=:'name' and c3>=:'time';
 c1 | c2 |       c3       
----+------+----------------------------
 1 | hank | 2018-02-06 10:08:00.787503

3.通过定义参数实现

设置一个session级别的参数,通过current_setting取值

hank=> set session "asasd.time" to "2018-02-06 10:09:00"; 
SET
hank=> select * from tb2 where c3 >= current_setting('asasd.time')::timestamp;
 c1 | c2  |       c3       
----+-------+----------------------------
 4 | aaaaa | 2018-02-06 10:18:39.289523
(1 row)

补充:postgresql存储函数/存储过程用sql语句来给变量赋值

--定义变量
a numeric;

方式一:

select sqla into a from table1 where b = '1' ;  --这是sql语句赋值

方式二:

sql1:= 'select a from table1 where b = ' '1' ' ';
execute sql1 into a; --这是执行存储函数赋值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • PostgreSQL备份工具 pgBackRest使用详解

    PostgreSQL备份工具 pgBackRest使用详解

    这篇文章主要介绍了PostgreSQL备份工具 pgBackRest使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • postgresql 中的时间处理小技巧(推荐)

    postgresql 中的时间处理小技巧(推荐)

    这篇文章主要介绍了postgresql 中的时间处理小技巧(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • postgresql 实现修改jsonb字段中的某一个值

    postgresql 实现修改jsonb字段中的某一个值

    这篇文章主要介绍了postgresql 实现修改jsonb字段中的某一个值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL的日期时间差DATEDIFF实例详解

    PostgreSQL的日期时间差DATEDIFF实例详解

    PostgreSQL是一款简介而又性能强大的数据库应用程序,其在日期时间数据方面所支持的功能也都非常给力,下面这篇文章主要给大家介绍了关于PostgreSQL的日期时间差DATEDIFF的相关资料,需要的朋友可以参考下
    2023-04-04
  • 使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)

    使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)

    这篇文章主要介绍了使用PostGIS完成两点间的河流轨迹及流经长度的计算,使用POSTGIS及其扩展pgrouting计算给定两点间的河流流经区域和河流长度,需要的朋友可以参考下
    2022-01-01
  • Postgres 创建Role并赋予权限的操作

    Postgres 创建Role并赋予权限的操作

    这篇文章主要介绍了 Postgres 创建Role并赋予权限的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql数据库导出和导入及常用的数据库管理工具

    postgresql数据库导出和导入及常用的数据库管理工具

    数据库的导入导出是最常用的功能之一,而PostgreSQL提供的对应工具为pg_dump和pg_restore。pg_dump是用于备份PostgreSQL数据库的工具,下面这篇文章主要给大家介绍了关于postgresql数据库导出和导入及常用的数据库管理工具使用的相关资料,需要的朋友可以参考下
    2023-04-04
  • 关于PostgreSql数据库与mysql数据库的不同点以及注意事项

    关于PostgreSql数据库与mysql数据库的不同点以及注意事项

    PostgreSQL和MySQL是两种流行的关系型数据库管理系统(RDBMS),它们都可以用来存储和管理数据,但是它们在某些方面有所不同,下面这篇文章主要给大家介绍了关于PostgreSql数据库与mysql数据库的不同点以及注意事项的相关资料,需要的朋友可以参考下
    2023-05-05
  • postgresql开启pg_log日志详细步骤及参数说明

    postgresql开启pg_log日志详细步骤及参数说明

    pg_log日志要启动保存的话需要去设置一下相关的配置文件参数就好了,下面这篇文章主要给大家介绍了关于postgresql开启pg_log日志详细步骤及参数说明的相关资料,需要的朋友可以参考下
    2024-02-02
  • postgresql varchar字段regexp_replace正则替换操作

    postgresql varchar字段regexp_replace正则替换操作

    这篇文章主要介绍了postgresql varchar字段regexp_replace正则替换操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01

最新评论