从 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 位数字。
美好的一天!
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 位数字。