2

在这个 MySQL查询上需要 PostgreSQL 上的等效结果。

select id, 'ID1' from supportContacts

想法是加入一个表名和行值等于 ID1 的列。

在 PostgreSQL 上执行相同的查询会给出所需的行值,但会给出 ?column? uknown列名。

哪个 PostgreSQL 查询会给出准确的输出?

4

2 回答 2

3

添加列别名以分配您选择的名称。否则系统将应用默认值。
要分配类型,请使用显式强制转换。我投到text这里:

SELECT id, 'ID1'::text AS "ID1" FROM supportContacts

或者使用 SQL 标准cast()使其可移植:

SELECT id, cast('ID1' AS varchar) AS "ID1" FROM "supportContacts"

为了可移植性,请确保 MySQL 使用SET sql_mode = 'ANSI'.

此外,在 PostgreSQL 中,未加引号的 CaMeL 大小写名称如supportContacts转换为小写。使用"supportContacts"supportcontacts取决于实际的表名。

首先阅读这里的优秀手册,了解有关标识符的基础知识。

于 2012-12-06T13:33:11.747 回答
0

你可以在这里找到 SQL Fiddle 的答案

于 2012-12-06T13:35:49.127 回答