Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询以翻转字母表的大小写_Sql_Oracle - Fatal编程技术网

Sql 查询以翻转字母表的大小写

Sql 查询以翻转字母表的大小写,sql,oracle,Sql,Oracle,编写一个接受4个字符的查询示例-aBcD,并将其从大写转换为小写格式,从小写转换为大写,即aBcD格式您可以使用ASCII字符函数,但不能使用任何PL/SQL代码,并且只能是SQL查询 with letters as ( select substr('MaHeSh',level,1) as letter,level row_label FROM dual connect by level<= length('MaHeSh')

编写一个接受4个字符的查询示例-aBcD,并将其从大写转换为小写格式,从小写转换为大写,即aBcD格式您可以使用ASCII字符函数,但不能使用任何PL/SQL代码,并且只能是SQL查询

   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
工作

我们将单词拆分为字母,并使用substr函数将它们转换为行

SUBSTR'Mahesh',2,1='a'提取第二个字母。使用CONNECTBY,我们生成和单词长度相等的虚拟行,并按如下所示逐个字母提取。稍后进行ascii检查并相应地翻转大小写。Listag将所有字母重新组合成一个单词

视图generatedrow标签用于保留字母顺序

LETTER  ROW_LABEL
M   1
a   2
H   3
e   4
S   5
h   6

创建像mixedcase这样的函数,用pl sql实现,它是可重用的。我需要一杯咖啡和一块松饼,谢谢。请阅读Pl/SQL,我们可以做,但我需要SQL查询形式,只是他们给了我一个提示,我们也可以在这里使用ASCII函数。请在您的问题中添加,您可以使用ASCII函数,而不是Pl/SQL。这是一个家庭作业问题吗?这将如何工作?您可以尽可能多地解释metried,我可以在我的答案中解释。!我认识一些人,他们编写sql/plsql已经超过10年了,但由于字符数不定,他们无法解决这个问题。回答得好。。。
LETTER  ROW_LABEL
M   1
a   2
H   3
e   4
S   5
h   6