我目前正在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语言。答案 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。