sqlite - 将语法从 sqllite 转换为 postgresql
问题描述
我有一个 sqlLite 数据库,其中包含一些字段 sql 语句,需要这个 sql 语句在 IOS 应用程序中创建一些图表。
现在我需要在使用 Postgresql 的 Web 应用程序中显示此图表我需要找到一个脚本,该脚本将 sqllite 语法转换为 postgresql 语法,例如 printf、当前日期等...我在问是否有一些准备好使用的脚本这种转换 PS:我使用 Symfony 作为后端所以 PHP
例子:
SELECT
r.agent AS gebiet,
r.invoiceno AS rechnung,
r.infotext AS auftrag,
c.companyno AS kundenr,
c.companyname AS kunde,
r.itemno AS artikelnr,
r.itemtext AS artikel,
SUM(r.qty) || ' ' || r.unit AS menge,
printf('%.2f', SUM(r.turnover) / SUM(r.qty)) AS preis,
printf('%.2f', SUM(r.turnover)) || ' ' || r.currency AS gesamt,
'2' AS 'sys_align9',
'2' AS 'sys_align10',
'2' AS 'sys_align11'
FROM
invoices r
INNER JOIN
company c
ON
r.companyno = c.companyno
WHERE
r.agent = ?
解决方案
免责声明:我不知道 SQLite ;)
查询结构本身看起来不错,但有两件事不适用于 Postgres:
- 我假设
printf()
将输出格式化为两位小数,所以to_char()
可能是您正在寻找的 - 标识符需要用双引号括起来,而不是单引号。所以
AS 'sys_align11'
应该是 `AS "sys_align11" 但引号不需要开头。
SELECT
r.agent AS gebiet,
r.invoiceno AS rechnung,
r.infotext AS auftrag,
c.companyno AS kundenr,
c.companyname AS kunde,
r.itemno AS artikelnr,
r.itemtext AS artikel,
SUM(r.qty) || ' ' || r.unit AS menge,
to_char(SUM(r.turnover) / SUM(r.qty), '0.00') AS preis,
to_char(SUM(r.turnover),'0.00') || ' ' || r.currency AS gesamt,
'2' AS sys_align9,
'2' AS sys_align10,
'2' AS sys_align11
FROM
invoices r
INNER JOIN
company c
ON
r.companyno = c.companyno
WHERE
r.agent = ?
如果turnover
是integer
(或bigin
),则需要将其转换为数字,否则除法将作为整数除法完成,例如SUM(r.turnover)::numeric
当您使用聚合函数时,您将需要 Postgres 中的某种函数group by
- 否则结果将不是确定性的。
如果invoiceno
是invoices
表的主键,一个 `group by r.invoiceno' 就足够了。
推荐阅读
- java - ActiveMQ 和 Java - 发布和消费之间的延迟
- flutter - Flutter 分页数据表
- laravel - Laravel:渴望加载特定的列
- java - 为什么我收到变量未初始化错误?
- python - 在 PyTorch 中提取 CNN 的中间层输出
- javascript - 具有平滑效果的 Sidenav 动画
- python - .encode('utf-8') 重复反斜杠
- javascript - select2 发送 id 而不是文本
- javascript - (反应)页眉和页脚的宽度不同会产生一个滚动X - 如何删除轴X滚动并固定页脚的宽度?
- button - JavaFX - HTMLEditor 工具栏按钮的样式类