SQL Query-employee ID - PullRequest
       5

SQL Query-employee ID

0 голосов
/ 13 марта 2019

У меня есть таблица, содержащая значения в employee_id длиной 5, 6 или 8 цифр. Идентификатор сотрудника моих родительских отчетов - 8 цифр.

Если это 5 цифр, я хочу добавить 100, если это 6 цифр добавить 10 и если 8 цифр без изменений.

Как мне написать запрос в SQL, чтобы все сотрудники идентифицировались в 8 цифр?

Вот мой код:

case 
    when length(`Employee ID`)=6 then RIGHT(CONCAT("10" , `Employee ID`), 8) AS `Employee ID`
    when length(`Employee ID`)=5 then RIGHT(CONCAT("100" , `Employee ID`), 8) AS `Employee ID`
    else length(`Employee ID`)=8
END

Но не повезло. Не удалось.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Предполагая, что employee_id является числовым, я бы сделал:

SELECT employee_id, 
    CASE 
        WHEN employee_id >= 10000000
        THEN employee_id
        ELSE employee_id + 10000000
    END new_employee_id
FROM t

Демонстрация на DB Fiddle :

| employee_id | new_employee_id |
| ----------- | --------------- |
| 12345678    | 12345678        |
| 123456      | 10123456        |
| 12345       | 10012345        |
0 голосов
/ 13 марта 2019
case 
when length(`Employee ID`)=6 then RIGHT(CONCAT("10" , `Employee ID`), 8) AS `Employee ID`
when length(`Employee ID`)=5 then RIGHT(CONCAT("100" , `Employee ID`), 8) AS `Employee ID`
else length(`Employee ID`)=8 END

Я выполнил множество подобных запросов, а также использовал IF.Итак, я заметил несколько ошибок.Из того, что я знаю, вам не нужно указывать RIGHT в CONCAT.И вам не нужно определять каждый WHEN ... THEN .. AS, скорее вы определяете AS после END.И, добавив к моему комментарию выше, последняя часть также неверна.Попробуйте этот запрос ниже и посмотрите, сможете ли вы получить желаемый результат:

CASE
WHEN LENGTH(`Employee ID`)=6 THEN CONCAT("10" , `Employee ID`)
WHEN LENGTH(`Employee ID`)=5 THEN CONCAT("100" , `Employee ID`)
ELSE `Employee ID` END AS `Employee ID`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...