如果给定表行的随机数,如何增加sql中的字符序列?

时间:2016-08-31 21:57:14

标签: sql oracle

我目前正在Oracle学习SQL语言。 在制作了非常简单的STUDENT表后,我想到了如何在ID字段中创建字符序列。

例如,如果STUDENT表有6行,我希望ID字段分别由'a','b','c'...'f'个字符插入。另一个条件是ID序列应按年龄按升序排序。

以下说明是关于STUDENT表格描述和当前插入值(ID字段当前为空)。

NAME            AGE      GRADE    ID
hi              15         1   
dui             12         2
giyu            16         3
hero            27         4
power           55         3    
rai             37         4

/////////////////////////////////////////////// ////////////////////////////////////////////////// //////

DESC STUDENT
NAME           VARCHAR2(20)
AGE            NUMBER(5)
GRADE          NUMBER
ID             VARCHAR2(12)

我希望这里出现很多精彩的想法=)

到目前为止,很容易想出按年龄排序的桌子。 但是分别插入字符序列是......好吧。现在想法没有出现。这不是功课。我只是想练习sql语言。

1 个答案:

答案 0 :(得分:1)

update tableX X
   set ID=(
           select ID from (
                select rowid as rid,
                       chr(mod((row_number() over (order by age))-1,26)+97) as ID
                  from tableX T
               )
            where rid=X.rowid
          )

over(order by )子句中设置的ID的必需顺序。函数row_number()按给定顺序获取行的序列数。 mod()得到除法的剩余部分(仅限26个字符)。 chr()通过ascii代码获取char。