2017-06-25 1 views
0

J'ai besoin de faire de la colonne 'full_name' comme colonne composite des colonnes 'first_name' et 'last_name' dans MySQL. Je peux faire la même chose dans MS SQL en utilisant la syntaxe suivante:créer un champ composite dans mysql

create table customer 
(
    first_name varchar(100) 
    , last_name varchar(100) 
    , full_name AS first_name + last_name 
) 

Comment puis-je faire la même chose dans MySQL. Aucune suggestion?

+0

Pourquoi voudriez-vous faire cela? – Strawberry

+0

Si j'ai besoin de récupérer des données de la base de données sur la base de full_name, alors je peux faire la même colonne d'interrogation au lieu de concaténer des colonnes à chaque fois. par conséquent, je veux stocker la valeur calculée dans la table au moment de l'insertion de données. –

Répondre

1

MySQL 5.7.5+ supporte les colonnes calculées/générées (here est une introduction au sujet). Donc, vous pouvez le faire comme:

create table customer (
    first_name varchar(100), 
    last_name varchar(100), 
    full_name varchar(200) AS (concat_ws(' ', first_name, last_name)) 
); 

Notes: D'abord, je suppose que vous voulez un espace entre les noms. Deuxièmement, la concaténation de chaînes n'utilise pas + dans MySQL.

Dans les versions antérieures de MySQL, vous devez utiliser une vue pour cela.

+0

Tout simplement génial ... !! _/\ _ –

0
UPDATE customer SET fullname=CONCAT(first_name,last_name) 

Vous pouvez essayer de mettre à jour la fiche dès qu'elle sera insérée dans le tableau.

J'espère que cela vous aidera.