我正在寻找一种在条件下在Mysql数据库https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html中创建虚拟列的方法。
想法是这样的:
CREATE TABLE `Contact`
(`id` BIGINT NOT NULL AUTO_INCREMENT,
`companyName` VARCHAR(255),
`firstName` VARCHAR(255),
`lastName` VARCHAR(255),
`fullName` VARCHAR(255) AS (IF personType='LEGAL_PERSON' THEN `companyName` ELSE CONCAT(lastName,' ',firstName) END IF) VIRTUAL,
`personType` VARCHAR(30) DEFAULT 'NATURAL_PERSON' NOT NULL);
在虚拟列中没有找到使用条件的示例。那可能吗?有其他提示可以做到这一点的提示吗?
答案 0 :(得分:2)
当然可以。只是IF
应该是一个函数,而不是关键字,因此语法与here中所建议的不同。试试:
CREATE TABLE `Contact` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`companyName` VARCHAR(255),
`firstName` VARCHAR(255),
`lastName` VARCHAR(255),
`fullName` VARCHAR(255) AS (
IF(
personType = 'LEGAL_PERSON', -- condition
`companyName`, -- value if true
CONCAT(lastName, ' ', firstName) -- value if false
)
) VIRTUAL,
`personType` VARCHAR(30) DEFAULT 'NATURAL_PERSON' NOT NULL
);