簡體   English   中英

Mysql 5.7在GENERATED列中使用IF THEN或CASE WHEN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM