编写一个查询以接受4个字符示例-aBcD并将其从大写格式转换为小写格式,然后从大写字母转换为大写格式,即AbCd格式,您可以使用ASCII字符函数但是您不能使用任何PL / SQL代码,它应该是只有一个SQL查询
答案 0 :(得分:2)
with letters as
(
select
substr('MaHeSh',level,1) as letter,level row_label
FROM dual
connect by level<= length('MaHeSh')
)
select
listagg(
case when ascii(letter) between ascii('a') and ascii('z') then
upper(letter)
else
lower(letter)
end,'') within group ( order by row_label) as flipped
from
letters
<强>结果强>:
FLIPPED
mAhEsH
<强>工作强>
我们将单词拆分为字母,并使用substr()函数将其转换为行
SUBSTR('Mahesh',2,1) = 'a'
提取第二个字母。使用connect by,我们生成等于单词长度的虚拟行,并像下面一样逐字母地提取。之后做相应的ascii检查和翻盖。 LISTAGG将所有字母再次分组为一个单词。
生成的视图(行标签是为了保留字母的顺序)
LETTER ROW_LABEL
M 1
a 2
H 3
e 4
S 5
h 6