SQL:如何返回Oracle中序号对应的月份和字符

SQL:如何返回Oracle中序号对应的月份和字符,sql,oracle,Sql,Oracle,如何返回以下结果?我了解如何使用“按级别连接”查询创建第一列 对于介于1和12之间的lvl,如何生成相应的月份?对于介于1和24之间的lvl(或“所选”字母表中的任何字母),如何生成相应的字母(小写字符) 好的,那么您想知道如何将级别转换为月份和字符 当月:to_char(to_date(级别,'mm'),'Mon') 就信而言,它更复杂。在像C这样的语言中,char只是一个数字,你可以做“char算术”,就像在Oracle中做日期算术一样。然而,您不能在Oracle中进行字符算术,或者至少不容

如何返回以下结果?我了解如何使用“按级别连接”查询创建第一列

对于介于1和12之间的
lvl
,如何生成相应的月份?对于介于1和24之间的lvl(或“所选”字母表中的任何字母),如何生成相应的字母(小写字符)


好的,那么您想知道如何将
级别
转换为月份和字符

当月:
to_char(to_date(级别,'mm'),'Mon')

就信而言,它更复杂。在像
C
这样的语言中,
char
只是一个数字,你可以做“char算术”,就像在Oracle中做日期算术一样。然而,您不能在Oracle中进行字符算术,或者至少不容易

最好的方法是创建一个“序号,对应字符”表(使用任何您需要的语言)并进行内部联接。还有其他解决方案,但它们依赖于字符集中的显式映射;不推荐

但是,如果您只想使用ASCII字母,可以使用
chr()
ASCII()
函数和算术。例如:

select level                                  as lvl, 
       to_char( to_date(level, 'mm'), 'Mon' ) as mnth,
       chr( ascii('a') + level - 1 )          as character
from dual 
connect by level <= 5;



       LVL MNTH         CHARACTER
---------- ------------ ---------
         1 Jan          a
         2 Feb          b
         3 Mar          c
         4 Apr          d
         5 May          e
选择级别为lvl,
至字符(至日期(级别“mm”),“Mon”)作为mnth,
chr(ascii('a')+级别-1)作为字符
来自双重

通过层次而不是线索来联系你的问题。那么,你需要什么呢?您已经知道的随机数(第二列),因此不需要帮助。你想知道如何得到与
num
值对应的月份(数字1、2、3、4、5)以及字符的月份(小写)?@mathguy是的,我只想得到这些分数。我突然想到也许你可以用这个来回答。谢谢你的回答。
select level                                  as lvl, 
       to_char( to_date(level, 'mm'), 'Mon' ) as mnth,
       chr( ascii('a') + level - 1 )          as character
from dual 
connect by level <= 5;



       LVL MNTH         CHARACTER
---------- ------------ ---------
         1 Jan          a
         2 Feb          b
         3 Mar          c
         4 Apr          d
         5 May          e