plpgsql相关内容

用空值替换空字符串

我正在按计数将一个巨大的表汇总到一个新表中,在这里我想将所有空字符串都更改为NULL,并且还要对某些列进行类型转换.我通读了一些帖子,但找不到查询,这使我可以在单个查询中跨所有列进行查询,而无需使用多条语句. 让我知道是否可以遍历所有列,并用空字符串替换为null来替换单元格. 参考:如何使用SQL Server将空白转换为空值? 解决方案 据我所知,没有内置函数可以替换表中所 ..
发布时间:2020-05-28 18:55:02 其他开发

使用bigint的plpgsql中的pseudo_encrypt()函数

我正在使用一个生成随机ID的系统,如答案#2 我的问题是,提到的 pseudo_encrypt()函数只能用于int而不是bigint.我试图重写它,但是它总是返回相同的结果: CREATE OR REPLACE FUNCTION pseudo_encrypt(VALUE bigint) returns bigint AS $$ DECLARE l1 bigint; l2 int; r1 b ..
发布时间:2020-05-28 18:54:59 其他开发

DROP FUNCTION不知道参数的数量/类型?

我使用'CREATE OR REPLACE FUNCTION somefunction'将所有功能保存在文本文件中. 因此,如果我添加或更改某些功能,我只会将文件提供给psql. 现在,如果我在现有函数中添加或删除参数,它将创建一个具有相同名称的重载,并按照确切的顺序删除所有参数类型中我需要的原始类型. 是否可以使用某种通配符来删除具有给定名称的所有功能,以便仅在文件顶部添加DROP ..
发布时间:2020-05-28 18:54:53 其他开发

Postgres动态查询功能

我需要创建一个函数,该函数将运行查询并返回表名和列名,并赋予该函数以结果.我目前有这个: CREATE OR REPLACE FUNCTION qa_scf(tname character varying, cname character varying) RETURNS SETOF INT AS $BODY$ BEGIN RETURN QUERY SELECT * FROM tname W ..
发布时间:2020-05-28 18:54:40 其他开发

转义函数,用于正则表达式或LIKE模式

要放弃阅读整个问题,我的基本问题是: PostgreSQL中是否有一个函数可以转义字符串中的正则表达式字符? 我已经浏览了文档,但是找不到这种功能. 这是个完整的问题: 在PostgreSQL数据库中,我有一列具有唯一名称.我也有一个过程,该过程会定期在此字段中插入名称,并且为了防止重复,如果需要输入已经存在的名称,则会在其末尾附加一个空格和括号. 即名称,名称(1),名 ..
发布时间:2020-05-28 18:54:37 其他开发

PostgreSQL函数返回多个结果集

是否可以从Postgres函数返回多个结果集,例如在MSSQL中? CREATE PROCEDURE test AS SELECT * FROM first_table SELECT * FROM second_table 解决方案 自PostgreSQL 8.3起就采用了一种更简单的方法: CREATE FUNCTION test() RETURNS SETOF fi ..
发布时间:2020-05-28 18:54:30 其他开发

在PostgreSQL中为交叉表动态生成列

我试图在PostgreSQL中创建crosstab查询,以便它自动生成crosstab列,而不是对其进行硬编码.我编写了一个函数,该函数可以动态生成我的crosstab查询所需的列列表.想法是使用动态sql在crosstab查询中替换此函数的结果. 我知道如何在SQL Server中轻松地做到这一点,但是我对PostgreSQL的有限了解阻碍了我的进步.我正在考虑将将列的动态列表生成的函数的 ..
发布时间:2020-05-28 18:54:26 其他开发

如何在PostgreSQL中进行大型非阻塞更新?

我想对PostgreSQL中的表进行大的更新,但是我不需要在整个操作中维护事务的完整性,因为我知道我要更改的列将不会写入或在更新过程中阅读.我想知道在psql控制台中是否有一种简便的方法 使这些类型的操作更快. 例如,假设我有一个名为"orders"的表,该表具有3500万行,而我想这样做: UPDATE orders SET status = null; 为了避免转移到主题之外的 ..
发布时间:2020-05-28 18:54:07 其他开发

PL/pgSQL检查行是否存在

我正在用PL/pgSQL编写一个函数,并且正在寻找检查行是否存在的最简单方法. 现在,我正在选择integer到boolean中,这实际上是行不通的.我对PL/pgSQL的经验还不够,还不知道执行此操作的最佳方法. 这是我功能的一部分: DECLARE person_exists boolean; BEGIN person_exists := FALSE; SELECT "per ..
发布时间:2020-05-28 18:54:02 其他开发