从 MSSQL 到 MySQL 的正确语法

correct syntax from MSSQL to MySQL

美好的一天!

MySQL 中正确的语法查询是什么?我在执行期间在 mysql 中遇到错误(您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 '[ 附近使用的正确语法=16=]EmpCode AS CONCAT('EMP' , RIGHT(Concat('0000', CONVERT(EmpId, ' at line 3)

CREATE TABLE tbEmployee
(
                EmpId INT NOT NULL, PRIMARY KEY,
                EmpCode AS CONCAT('EMP' , RIGHT(Concat('0000', CONVERT(EmpId, CHAR(5))),5)) PERSISTED,
                EmployeeName VARCHAR(50),
                Age        INT,
                Gender VARCHAR(10)
)

MySQL 生成的列是 VIRTUAL(默认值)或 STORED,后者对应于 SQL 服务器的持久化。试试这个版本:

CREATE TABLE tbEmployee (
    EmpId INT NOT NULL PRIMARY KEY,
    EmpCode VARCHAR(50) AS (CONCAT('EMP', LPAD(EmpId, 5, '0'))) STORED,
    EmployeeName VARCHAR(50),
    Age INT,
    Gender VARCHAR(10)
);

另请注意,MySQL 在将数字列转换为文本方面有点宽松。此外,我们可以使用 MySQL 的 LPAD 函数将员工 ID 左补零,宽度为 5 位数字。