有没有一种简单的方法可以在 PostgreSQL 查询中使用变量? [复制]

Posted

技术标签:

【中文标题】有没有一种简单的方法可以在 PostgreSQL 查询中使用变量? [复制]【英文标题】:Is there a EASY way to use a variable in a PostgreSQL query? [duplicate] 【发布时间】:2019-10-16 02:27:41 【问题描述】:

使用:PostgreSQL10 & pgAdmin4

所以这个查询很简单:

SELECT * FROM [schema_name].[table_name] 
   WHERE [schema_name].[table_name].[field_name] = 'search_value';

在 Transact-SQL 中,您可以为“search_value”创建一个变量:

DECLARE @find varchar(30) = 'search_value';

SELECT * FROM [schema_name].[table_name] 
   WHERE [schema_name].[table_name].[field_name] = @find;

甚至重复使用变量:

SET @find = 'new_search_value';

我现在已经尝试了一切在 PostgreSQL 中模仿这个,但我无法让它工作。

有什么建议吗???

【问题讨论】:

【参考方案1】:

您可以使用自定义configuration value 来做到这一点:

SELECT set_config('vars.find', 'search_value', false);

SELECT * FROM schema_name.table_name
   WHERE schema_name.table_name.field_name = current_setting('vars.find');

名称needs a namespace(在本例中为vars),但您可以为此使用任何随机字符串。

set_config() 的最后一个布尔参数确定新值是在会话的其余部分持续 (false) 还是在当前事务结束时重置 (true)。

【讨论】:

最后一个干净利落的回应。射击,@nick-barnes !!我尝试过使用 With 子句,将查询更改为函数,声明语句,临时表等,这是最有意义的(可能是我来自 MS SQL 背景)...

以上是关于有没有一种简单的方法可以在 PostgreSQL 查询中使用变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

一种简单方便的postgresql插件multicorn安装方法 ---yum install multicorn10.x86_64

如何从 SQLite 迁移到 PostgreSQL (Rails)

postgresql从一个数据库转到另一个数据库有没有方便的方法?

显示查询结果列类型 (PostgreSQL)

简单介绍PostgreSQL解析URL的方法

将 java 对象保存到 PostgreSQL