将字母转换为sql中的数字

时间:2018-10-25 03:32:34

标签: sql oracle

我有一个学生表,其中一列包含学生获得的成绩(例如A,B,C ...)。我需要为每个年级分配一个数字(例如,A-> 10,B-> 8,C-> 6 ...)

我是sql的新手,我对如何执行此操作一无所知。 我尝试了一种在网上找到的方法:

select letter_grade, case when 'A' then 4 end as lettergrade from students;

但是它不起作用

2 个答案:

答案 0 :(得分:4)

您在正确的轨道上:

SELECT
    letter_grade,
    CASE letter_grade WHEN 'A' THEN 10
                      WHEN 'B' THEN 8
                      WHEN 'C' THEN 6
                      WHEN 'D' THEN 4
                      ELSE 0 END AS number_grade
FROM students;

答案 1 :(得分:1)

Oracle解决方案(因为它使用Oracle专有功能,因此在其他SQL语言中不起作用)将使用decode()。此函数将第一个参数与第二个,第四个,第六个等进行比较,当找到匹配项时,它将在匹配后立即返回该参数。如果找不到匹配项,它将返回作为最后一个参数输入的默认值。

select student_id, letter_grade,
       decode(letter_grade, 'A', 10, 'B', 8, 'C', 6, 'D', 4, 0) as numeric_grade
from   students