我在 Oracle 10 上有这个查询:

SELECT DISTINCT NOME
FROM ICT.UTENTE
WHERE UPPER(nome) LIKE UPPER('MA%');

这有效,让我得到类似的东西:
MARIA LUISA
Mariano
MARIO

我真正想要的是让每一行都大写,但我想不出一种将 DISTINCTUPPER 关键字混合在一起的方法。我试图用以下任何一个替换第一个查询行:
SELECT DISTINCT UPPER(nome)   -- not a SELECTed expression
SELECT UPPER (DISTINCT nome)  -- missing expression
SELECT DISTINCT UPPER nome    -- upper: invalid identifier
SELECT UPPER DISTINCT nome    -- FROM keyword not found where expected

但我总是遇到麻烦!子查询是唯一的解决方案吗?

最佳答案

这应该有效。

SELECT DISTINCT UPPER(nome)

确实有效。如果您收到此错误...
ORA-01791: not a SELECTed expression

...那么您还没有发布整个查询。具体来说,您没有向我们展示 ORDER BY 子句。对于 DISTINCT,ORDER BY 子句中的属性必须与投影匹配。所以要么你需要...
ORDER BY upper(nome)

......或者你可以作弊并按位置排序......
ORDER BY 1

关于sql - 将 DISTINCT 和 UPPER 关键字混合在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15296629/

10-12 13:59