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

Sta*_*hie 19 sql oracle concatenation oracle-sqldeveloper

我有一个employees表,我想添加一个第三列,它被称为名为"FullName"的名字和名字的串联.如何在不丢失前两列任何数据的情况下实现这一目标?

Mat*_*gen 14

快速序言:此答案基于此问题与SQL Server相关的原始错误标记.我不再了解它在Oracle SQL Developer上的有效性.

ALTER TABLE Employees ADD FullName AS (FirstName + ' ' + LastName)
Run Code Online (Sandbox Code Playgroud)

虽然在实践中我建议你在你的手术中进行手术SELECT.这有些偏好,但我倾向于认为在最终查询中做事比存储额外的计算列更清晰,更易读,更易于维护.

编辑:

这最终被找到了答案,并被OP列为对这篇文章的评论.以下是Oracle Sql Database的相应语法.

ALTER TABLE emps MODIFY (FULL_NAME VARCHAR2(50) GENERATED ALWAYS AS (first_name || ' ' || last_name) VIRTUAL); 
Run Code Online (Sandbox Code Playgroud)


小智 5

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

例如:

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
Run Code Online (Sandbox Code Playgroud)