преобразовать букву в число в sql - PullRequest
0 голосов
/ 25 октября 2018

У меня есть таблица ученика, одна из ее колонок содержит оценку, полученную учеником (например, 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 голосов
/ 25 октября 2018

Решение Oracle (которое не будет работать на других диалектах SQL, потому что оно использует проприетарную функцию Oracle) заключается в использовании decode().Эта функция сравнивает первый аргумент со вторым, четвертым, шестым и т. Д., И когда она находит совпадение, она возвращает аргумент, следующий сразу за совпадением.Если совпадений не найдено, возвращается значение по умолчанию, введенное в качестве последнего аргумента.

select student_id, letter_grade,
       decode(letter_grade, 'A', 10, 'B', 8, 'C', 6, 'D', 4, 0) as numeric_grade
from   students
0 голосов
/ 25 октября 2018

Вы на правильном пути:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...