我正在将一个模式从Postgres转换为MySQL,并且由于显然缺少一个内置函数来聚合一组由(子)查询返回的结果,例如,Postgres的string_agg()。具体来说,假设表t有3行:
COL
"x"
"y"
"z"
在Postgres中,SELECT string_agg(col, ',') FROM t将返回与指定分隔符(即字符串x,y,z )连接的所有COL值的一行结果。我如何在MySQL中实现这一点?
我需要将查询从Oracle SQL转换为Postgres。查询从游标返回单个行元素。我将用Oracle编写这个查询的简化形式:
select CONCAT_LIST( cursor( select first_name || '-' || last_name from sys_users) ,',') as users_list from dual
如果表"sys_users“包含两个元素:
1. first name - "John", last name - "Smith"
2. first name - "
我试图在Windows10上使用pgbouner1.7.2为PostgreSQL 9.6设置连接池。
试图连接到cmd中的pgb强
psql -p 6432 -h 127.0.0.1 postgres pgbouncer
给出错误:
psql: server closed the connection unexpectedly Server terminated abnormally before or while processing
端口6432正在侦听和查看pg_log中没有错误。
下面是我的pgbouncer.ini配置文件:
[databases]
我正准备把我的laravel应用数据库mysql改为postgres。我使用的是原始查询这里是我的查询:
select IF (modelno="" OR modelno IS NULL,name,concat(name, " / ",modelno)) as name, id from `models` where `deleted_at` is null order by `name` asc
当我对postgres使用此查询时,引发以下异常。
零长度分隔标识符在“第1行或附近:选择IF (modelno="”或modelno为NULL,name,
在当今的web应用程序中,相对于现在的任何时间间隔显示时间戳是很常见的,比如5 days ago、3 hours ago、34 minutes ago或just now (如果时间小于几秒)。
我试着在网上找到一个postgres函数,它可以将时间戳转换成这种格式,但令人惊讶的是,我真的找不到。有人知道为这个写的好函数吗?
我尝试在PostgreSQL中进行简单的连接,但它总是抛出一个错误消息。我不明白我到底做错了什么。
select concat('abcde', 'fgh');
No function matches the given name and argument types. You might need to add explicit type casts.
select concat(cast('abcde' as text), cast('fgh' as text));
No function matches the given
我正在将数据从MySQL转换到Postgres,在Postgres数据库中,电话号码作为单独的字段存储在客户表中,即Tel_Home、Tel_Work、Tel_Fax、Cellular,而MySQL电话号码存储在自己的表telnos中。
我的问题是,在单个select语句中,如何将表telnos(might中的所有电话号码作为最多4个单独的字段而不是4个单独的记录/行在一行中返回?
这是我试图想出来的,但没有成功,因为每个客户最多存储了4个可能的数字。
Select A.Name,A.surname,B1.number,B2.number
from Customer A
我正在将一些MySQL代码迁移到Postgres,并进行了一段时间的转换:
GROUP_CONCAT(
DISTINCT id,':',foo,':',bar ORDER BY id
) as id,
这会导致逗号分隔的字符串列表,如:
id:foo:bar,id2:foo 2:bar2
“不同”是为了避免重复。
我在Postgres中读过相当于GROUP_CONCAT的string_agg,但我不知道如何使它以同样的方式工作。
编辑:我可能已经回答了我自己的问题。我想出了一个解决方案。这方面的问题是,现在排序是由连接字符串而不是由id完成的
用例相当简单。在postgres中,我可以将GROUP BY中的值聚合到一个数组中:
select
customer,
array_agg(product_name) as items
from transactions
group by customer
customer items
-----------------------------------------------------------
john [salad, pizza, beer, diapers, pasta, cheese]
joe [cheese, beef
我试图对搜索项进行如下结构的查询:
IssueCategory -* Issue (一对多)
使用以下JPQL
select count(z) from IssueCategory z join z.issues x
where
lower(cast(function('lo_get', cast(x.diagnosis as integer)) as text)) like lower(concat('TEXT TO SEARCH', '%'))
其中诊断是带有Issue注释的@Lob字符串字段,映射为postgres中的文本字段:
CREAT
我对postgres相当陌生,目前使用9.6。在使用postgres的jsonb文档在postgres中实现全文搜索时,我注意到嵌套数组的搜索结果缓慢。我使用了“解释”命令,它没有使用任何索引。为了简单起见,我创建了一个表来调查:
CREATE TABLE book (
id BIGSERIAL NOT NULL,
data JSONB NOT NULL
);
我现有的指数:
CREATE INDEX book_author_idx
ON book USING GIN (to_tsvector('english', book.data ->>
我试图使用工具的内部变量在中创建一个查询,但是它用''通知变量的值,这会在postgres内的查询中生成一个错误,有建议吗?
查询:
select count(*) from table_name where column_name like ('%'$VARIABLE'%') LIMIT 1
产出:
pq: syntax error at or near "'VALUE_VARIABLE'"
我正在将我的数据库(Sql server)更改为postgres,但是我习惯的查询在postgres中不起作用。连接不起作用
SELECT DISTINCT CONCAT(TOTALIZER_METER_READINGS.date,' ',TOTALIZER_METER_READINGS.time)
FROM TOTALIZER_METER_READINGS
JOIN (
SELECT CONCAT(date,' ',MIN(time))::timestamp as mints FROM TOTALIZER_METER_READINGS
WHERE d
我得到了这个错误:
org.postgresql.util.PSQLException: No value specified for parameter 1.
对于这种查询:
UPDATE user
SET Email = 'fake.' || id::varchar || '@localhost'
WHERE Email is not null and char_length(Email)>0 and removed=false and id in (:ids)
我将此查询作为原生查询运行,如下所示:
sessionFactory.
我想知道如何尽可能地挂载SQL以查询表中所有列的特定短语,例如:
表
ID | Name | text | Date | Author | Status
1 | Augusto Weiand | Test text | 2010-01-01 | Deividi | 1
查询
SELECT *
FROM table
WHERE columns LIKE '%augusto%2010%text%"
我没有提供足够的细节,请原谅,我喜欢创建一个动态SQL,在这里我不需要指定带有‘和’或' or‘的列,因为在Postgres中可