SELECT DISTINCT OVER TEXT 作为 PostgreSQL 和 Oracle 中常见查询的需要
SELECT DISTINCT OVER TEXT as needs over common query in PostgreSQL and Oracle
我的table
名称 - 文件夹
列 - 文本数据类型的描述
SELECT DISTICT description
from FOLDER
在 PostgreSQL 中工作正常,但在 Oracle 中失败并出现错误
ORA-00932: inconsistent datatypes: expected - got CLOB
为此,我需要一个在 PostgreSQL 和 Oracle 中都适用的通用查询
SELECT DISTINCT description from FOLDER
.
Oracle 不支持 DISTINCT
和 CLOB
列。可以使用TO_CHAR
(当CLOB列的最大长度小于4000
)
SELECT DISTINCT to_char(description) from FOLDER;
由于您在评论中提到它在 oracle 上运行良好,我认为不存在长度问题。当您正在寻找 POSTGRES
和 ORACLE
的共同解决方案时,我建议 CAST
SELECT DISTINCT CAST(description as varchar(3000)) from FOLDER;
这应该适用于 databases.Change 和 VARCHAR(N)
相应的最大限制。
注意:我不建议在 oracle 中使用 VARCHAR
而不是 VARCHAR2
。
The VARCHAR datatype is synonymous with the VARCHAR2 datatype. To avoid possible changes in behavior, always use the VARCHAR2 datatype to store variable-length character strings.
我的table
名称 - 文件夹 列 - 文本数据类型的描述
SELECT DISTICT description
from FOLDER
在 PostgreSQL 中工作正常,但在 Oracle 中失败并出现错误
ORA-00932: inconsistent datatypes: expected - got CLOB
为此,我需要一个在 PostgreSQL 和 Oracle 中都适用的通用查询
SELECT DISTINCT description from FOLDER
.
Oracle 不支持 DISTINCT
和 CLOB
列。可以使用TO_CHAR
(当CLOB列的最大长度小于4000
)
SELECT DISTINCT to_char(description) from FOLDER;
由于您在评论中提到它在 oracle 上运行良好,我认为不存在长度问题。当您正在寻找 POSTGRES
和 ORACLE
的共同解决方案时,我建议 CAST
SELECT DISTINCT CAST(description as varchar(3000)) from FOLDER;
这应该适用于 databases.Change 和 VARCHAR(N)
相应的最大限制。
注意:我不建议在 oracle 中使用 VARCHAR
而不是 VARCHAR2
。
The VARCHAR datatype is synonymous with the VARCHAR2 datatype. To avoid possible changes in behavior, always use the VARCHAR2 datatype to store variable-length character strings.