我在 Oracle 10 上有这个查询:
SELECT DISTINCT NOME
FROM ICT.UTENTE
WHERE UPPER(nome) LIKE UPPER('MA%');
这有效,让我得到类似的东西:
MARIA LUISA
Mariano
MARIO
我真正想要的是让每一行都大写,但我想不出一种将
DISTINCT
和 UPPER
关键字混合在一起的方法。我试图用以下任何一个替换第一个查询行: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/