【发布时间】:2015-08-25 15:56:53
【问题描述】:
如何使用 PostgreSQL 语法编写以下 MySQL 查询:
SELECT CONCAT(REPEAT(" ", (COUNT(parent.name) - 1)), cat.name) AS name
提前致谢!
【问题讨论】:
-
使用连接符号 ||
标签: mysql sql postgresql concat
如何使用 PostgreSQL 语法编写以下 MySQL 查询:
SELECT CONCAT(REPEAT(" ", (COUNT(parent.name) - 1)), cat.name) AS name
提前致谢!
【问题讨论】:
标签: mysql sql postgresql concat
这里的错误是 PostgreSQL 不允许双引号 " 用于文字字符串(根据 SQL 标准)。您需要使用单引号 '。
您还需要使用 ::int(特定于 Postgre)或 CAST(... AS int) 将 (COUNT(parent.name) - 1) 转换为整数。
请注意,如果 (COUNT(parent.name) - 1) 优于 2147483647,这可能会引发 integer out of range 错误。
SELECT CONCAT(REPEAT(' ', (COUNT(parent.name) - 1)::int), cat.name) AS name
请注意,您也可以使用|| 进行字符串连接:
SELECT REPEAT(' ', (COUNT(parent.name) - 1)::int) || cat.name AS name
【讨论】:
REPEAT 有 2 个参数:一个字符串和一个整数(不是 bigint))。跨度>
SELECT REPEAT(" ", (COUNT(parent.name) - 1)) || cat.name AS name
【讨论】: