繁体   English   中英

在SQL中将字母转换为数字

[英]convert letter to number in sql

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

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

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

但是它不起作用

您走在正确的轨道上:

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;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM