相关疑难解决方法(0)

如何在Postgres SELECT中连接列?

我有两个字符串列ab一个表foo.

select a, b from foo返回值ab.但是,串联ab不起作用.我试过了 :

select a || b from foo
Run Code Online (Sandbox Code Playgroud)

select  a||', '||b from foo
Run Code Online (Sandbox Code Playgroud)

从评论更新:两列都是类型character(2).

sql postgresql types concatenation coalesce

133
推荐指数
5
解决办法
23万
查看次数

PostgreSQL中的IN vs ANY运算符

PostgreSQL中INANY运算符有什么区别?
两者的工作机制似乎是一样的.任何人都能用一个例子来解释这个吗

sql database postgresql rdbms sql-in

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

返回NULL的空数组的array_length()

我正在PL/pgSQL中开发一些存储过程,其中一些给我一些问题.我正在开发的sprocs通过参数接收一个数组,我在FOR LOOP中使用它来获取它的所有元素.要定义FOR LOOP的上限,我使用array_length函数.

FOR i IN 1..array_length(array,1) LOOP

   --array[i] something in here

END LOOP;
Run Code Online (Sandbox Code Playgroud)

当我向sprocs提供一个空数组时会出现问题.sproc只是返回一个错误,而不是不进入循环,说明FOR LOOP的上限是NULL.不应该是0吗?

我对FOR LOOP有什么不妥吗?

有没有其他方法在LOOP中使用相同的边界而不使用空数组时返回NULL?

注意:我知道我总是可以在LOOP之前使用条件,如下所示:

IF array_length(array,1) IS NOT NULL THEN
Run Code Online (Sandbox Code Playgroud)

但问题是:这个sproc应该在最短的时间内处理数千个电话.因此,我并不期待为处理增加不必要的开销.我只是在寻找是否有办法在循环中"循环"一个空数组.

arrays postgresql plpgsql

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

使用数据类型"text"存储字符串的任何缺点?

根据Postgres文档,它们支持3种数据类型的字符数据:

character varying(n), varchar(n)  variable-length with limit
character(n), char(n)             fixed-length, blank padded
text                              variable unlimited length
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我遇到了一些令人不愉快的情况,其中插入/更新查询失败,因为要插入的所需文本超出varchar(n)char(n)限制.

对于这种情况,更改此类列的数据类型就text足够了.

我的问题是:
如果我们概括并更改每个字符存储列的数据类型text,那么性能/内存方面是否有任何缺点?
如果数据类型的列text每次都存储10个或更少的字符,我应该选择text还是varchar(10)
如果我追求的text是什么?

sql postgresql types postgresql-performance

15
推荐指数
3
解决办法
6581
查看次数

如何匹配not null + not empty?

我必须对凌乱的数据库做一些查询.有些列填充了null空字符串或空字符串.我可以这样查询:

select * from a where b is not null and b <> '';
Run Code Online (Sandbox Code Playgroud)

但这种情况有没有捷径?(匹配每个"非空"值)类似于:

select * from a where b is filled;
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.5

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