小编avi*_*avi的帖子

唯一约束与唯一索引?

是否有区别:

CREATE TABLE p(
    product_no integer,
    name text UNIQUE,
    price numeric
);
Run Code Online (Sandbox Code Playgroud)

和:

CREATE TABLE p(
        product_no integer,
        name text,
        price numeric
 );
CREATE UNIQUE INDEX customername
  ON p
  USING btree
  (name COLLATE pg_catalog."default");
Run Code Online (Sandbox Code Playgroud)

在这两种情况下名称都是唯一的吗?当索引唯一时意味着什么?

编辑Postgres 唯一约束与索引没有回答我的问题。它考虑了 FK 的情况。我的问题与 FK 无关。我只想知道这两个操作在这个不涉及 FK 的例子中是否等效。

sql postgresql

2
推荐指数
1
解决办法
888
查看次数

有效地检查数字是否在第二个数字+ -10%的范围内?

我需要编写一个函数来检查一个数字是否在10%另一个数字的范围内.

我写了这个函数:

def IsCloseEntough(num1, num2 ):
    percent = num1/100
    if num1-percent < num2 and num2< num1+percent:
       return True;
    else:
       return False;
Run Code Online (Sandbox Code Playgroud)

它返回True如果 num1-10% of num1 < num2 < num1+10%.这解决了问题,但感觉这个代码不是非常"Python Like".有没有办法让它更简单?

python

2
推荐指数
3
解决办法
83
查看次数

检查数组中的子字符串是否出现在字符串中?

我有以下查询:

select case when count(*)>0 then true else false end
from tab
where param in ('a','b') and position('T' in listofitem)>0
Run Code Online (Sandbox Code Playgroud)

这将检查'T'列中是否存在,listofitem如果计数是> 0.基本上它是搜索子字符串.

这在私人案件中运作良好.不过我的真实情况是我text[]调用了sub_array多个值进行检查.如何修改查询以处理sub_array类型?我更喜欢在查询而不是带LOOP的函数中使用它.

我真正需要的是:

select case when count(*)>0 then true else false end
from tab
where param in ('a','b') and position(sub_array in listofitem)>0
Run Code Online (Sandbox Code Playgroud)

这是因为sub_array 类型不起作用Text[]

sql postgresql

2
推荐指数
1
解决办法
976
查看次数

如何在 PostgreSQL 中验证有效的电子邮件地址?

我有一个包含电子邮件字段和 30K 记录的表。我发现许多用户输入了无效的电子邮件地址,其中包含以下字符: <,@@等...

PostgreSQL 有没有办法运行一个查询来显示所有无效的电子邮件地址?我知道如何用正则表达式做到这一点

[a-z,A-z,0-9,'.']*@[a-z,A-z,0-9]*.com 
Run Code Online (Sandbox Code Playgroud)

[a-z,A-z,0-9,'.']*@[a-z,A-z,0-9]*.xx|xxx.xx 对于类似.co.uk或这样的地址.org.it

如何在查询中完成此操作?我只想获取所有无效地址的列表,以便我可以要求修复他们的记录。

sql postgresql

2
推荐指数
1
解决办法
5451
查看次数

如何在 PostgreSQL 中使用两个值引发异常?

我知道我可以做plpgsqlRAISE Exception '%', variable_name;

但我需要用两个值引发异常:

raise exception 'values %, % are incorrect please check.'(val1,val2);
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我仍然得到syntax error

手册没有说明如何做到这一点: https ://www.postgresql.org/docs/current/static/plpgsql-errors-and-messages.html

我该如何正确设置?

sql postgresql

1
推荐指数
1
解决办法
3351
查看次数

Postgresql如何根据列名找到表?

我知道我有一个列"fortyid"的表,但我不记得它是哪个表,我在数据库中有350个表.有没有办法找到所有以"fortyid"为列的表格?(与类型无关)

sql postgresql

1
推荐指数
1
解决办法
26
查看次数

如何处理 postgresql 中数组为空的情况?

我有一个用 plpythonu 编写的函数。

CREATE OR REPLACE FUNCTION temp(t_x integer[])
  RETURNS void AS
$BODY$
.
.
.
x=plpy.execute("""select array_to_string(select id from A where id=any(array%s) ), ',')"""%t_x)
Run Code Online (Sandbox Code Playgroud)

在某些情况下,当 t_x 为空时,我会收到错误消息:

错误:无法确定空数组的类型

我如何解决它?

sql postgresql

0
推荐指数
1
解决办法
4767
查看次数

如何在一行中获得postgreSQL中的2个最新值?

我按顺序列出了这个项目表:

orderitemid  orderid itemid quantity price      createdate
1                1     12     5     15.5         2016-12-04 11:35:02.06629
2                1     17     5     13.2         2016-12-04 11:32:02.06629
3                2     12     2     12.5         2016-12-05 11:35:02.06629
4                2     17     1     12.6         2016-12-05 11:35:02.06629
5                2     18     15    14.5         2016-12-04 11:35:02.06629
6                3     12     45     3           2015-12-04 11:35:02.06629
Run Code Online (Sandbox Code Playgroud)

我有一个查询,它给出了每个项目的最新顺序,所以:

select distinct on (itemid) *
from orderitems
order by itemid,createdate
Run Code Online (Sandbox Code Playgroud)

这给了:

orderitemid  orderid itemid quantity price      createdate
3                2     12     2     12.5         2016-12-05 11:35:02.06629
4                2     17     1     12.6         2016-12-05 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql greatest-n-per-group

0
推荐指数
1
解决办法
69
查看次数

标签 统计

postgresql ×7

sql ×7

greatest-n-per-group ×1

python ×1