[英]Mysql 5.7 use IF THEN or CASE WHEN in GENERATED columns
我正在尋找一種在條件下在Mysql DB https://dev.mysql.com/doc/refman/5.7/en/create-table-generation-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);
我沒有在虛擬列中找到使用條件的示例。 那可能嗎? 有任何其他聰明的方法可以做到這一點嗎?
當然可以。 只是這里的IF
應該是一個函數而不是關鍵字,因此語法與此處建議的不同。 嘗試:
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
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.