web-dev-qa-db-fra.com

Ajouter une colonne qui représente une concaténation de deux autres colonnes Varchar

J'ai une table des employés et je veux ajouter une troisième colonne valorisée comme concaténation du prénom et du nom de famille appelé "FullName". Comment puis-je accomplir cela sans perdre de données de l'une des deux premières colonnes?

19
Stampin Stephie

Préface rapide: cette réponse était basée sur la balise initialement incorrecte que cette question concernait SQL Server. Je ne suis plus au courant de sa validité sur Oracle SQL Developer.

ALTER TABLE Employees ADD FullName AS (FirstName + ' ' + LastName)

Bien qu'en pratique, je vous conseille de faire cette opération dans votre SELECT. C'est une préférence quelque peu personnelle, mais j'ai tendance à penser que faire des choses dans vos requêtes finales est un peu plus propre, plus lisible et plus facile à gérer que de stocker des colonnes calculées supplémentaires.

Modifier:

Cela a finalement été trouvé comme réponse, et répertorié par le PO comme commentaire sur ce post. Voici la syntaxe appropriée pour la base de données Oracle Sql.

ALTER TABLE emps MODIFY (FULL_NAME VARCHAR2(50) GENERATED ALWAYS AS (first_name || ' ' || last_name) VIRTUAL); 
14
Matthew Haugen

Si vous avez besoin d'une colonne de nom complet à tout moment lorsque vous sélectionnez dans la base de données, vous pouvez créer une colonne calculée au moment de la création de votre employé de table.

par exemple:

CREATE TABLE Employee
(
  FirstName VARCHAR(20),
  LastName VARCHAR(20),
  FullName AS CONCAT(FirstName,' ',LastName)
)

INSERT INTO Employee VALUES ('Rocky','Jeo')

SELECT * FROM Employee 

  Output:

  FirstName  LastName  FullName
  Rocky      Jeo       Rocky Jeo
4
mansi

Cela dépend de votre objectif, si vous avez vraiment besoin d'ajouter une nouvelle colonne à votre base de données, ou si vous avez juste besoin de rechercher le "nom complet" selon les besoins.

Pour le visualiser à la volée, il suffit d'exécuter la requête

SELECT firstname + ' ' + lastname AS FullName FROM employees

Au-delà de cela, vous pouvez également créer une procédure stockée simple pour la stocker.

1
Jacky

(Pour un résultat unique, utilisez une valeur égale à la condition where)

select * 
from TABLE_name 
where (Column1+Column2) in (11361+280,11365+250)
0
Mohammed Ali