有没有在PostgreSQL查询中使用变量的简便方法?

时间:2019-05-30 12:13:51

标签: postgresql variables pgadmin

使用: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 个答案:

答案 0 :(得分:5)

您可以使用自定义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)。 / p>