添加一个表示两个其他Varchar列串联的列

我有一个雇员表,我想添加第三列,名为“FullName”的第一个和最后一个名字的连接。 我怎样才能做到这一点,而不会丢失前两栏中的任何数据?


快速前言:这个答案是基于这个问题与SQL Server有关的最初不正确的标记。 我不再知道它在Oracle SQL Developer上的有效性。

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

虽然在实践中我建议你在SELECT做这个操作。 这有点个人偏好,但我倾向于认为,在存储额外的计算列时,在您的最终查询中进行的操作要简洁一些,可读性更强,维护也更容易。

编辑:

最终发现这是答案,并被OP列为对这篇文章的评论。 以下是适用于Oracle Sql数据库的语法。

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

这取决于你的目的,你是否真的需要添加一个新的列到数据库中,或者你只需​​要根据需要查询“全名”。

要动态查看它,只需运行查询

SELECT firstname + ' ' + lastname AS FullName FROM employees

除此之外,您还可以创建一个简单的存储过程来存储它。


如果您从数据库中选择时需要全名列,那么您可以在创建表员工时创建计算列。

例如:

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
链接地址: http://www.djcxy.com/p/24715.html

上一篇: Add a Column that Represents a Concatenation of Two Other Varchar Columns

下一篇: SQL trigger, check if certain value was entered