我有一个表,其中包含employee_id中的值,这些值的长度为5、6或8位数字。我的父母报告员工ID为8位数字。

如果是5位,我要添加100,如果是6位,请添加10,如果8位没有变化。

如何在SQL中编写查询以使所有员工ID都为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


但是没有运气。失败了

谢谢。

最佳答案

假设employee_id是数字,我会这样做:

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


Demo on DB Fiddle

| employee_id | new_employee_id |
| ----------- | --------------- |
| 12345678    | 12345678        |
| 123456      | 10123456        |
| 12345       | 10012345        |

关于mysql - SQL查询员工ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55132413/

10-12 00:47