将DISTINCT和UPPER关键字混合在一起

BAD*_*EED 2 sql oracle select distinct uppercase

我在Oracle 10上有这个查询:

SELECT DISTINCT NOME
FROM ICT.UTENTE
WHERE UPPER(nome) LIKE UPPER('MA%');
Run Code Online (Sandbox Code Playgroud)

这工作,让我得到类似的东西:

MARIA LUISA
Mariano
MARIO
Run Code Online (Sandbox Code Playgroud)

我真正想要的是以大写字母表示每一行,但我无法想出一种将关键词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
Run Code Online (Sandbox Code Playgroud)

但我总是遇到麻烦!是否是唯一的解决方案?

APC*_*APC 6

这应该工作.

SELECT DISTINCT UPPER(nome)   
Run Code Online (Sandbox Code Playgroud)

确实它确实有效.如果您收到此错误...

ORA-01791: not a SELECTed expression
Run Code Online (Sandbox Code Playgroud)

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

ORDER BY upper(nome)
Run Code Online (Sandbox Code Playgroud)

......或者你可以按位置作弊和排序......

ORDER BY 1
Run Code Online (Sandbox Code Playgroud)