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

  显示原文与译文双语对照的内容
78 1

我有一个employees表,我想添加一个第三列,它被称为名为“FullName ”的名字和名字的串联。如何在不丢失前两列中任何数据的情况下完成该任务?

时间:原作者:0个回答

83 1

快速序言:此答案基于此问题与SQL Server相关的原始错误标记。我不再了解它在 Oracle SQL开发人员中的有效性。

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

虽然在实践中我建议你在 SELECT 中执行该操作。这有点个人偏好,但我倾向于认为在最终查询中做事比存储额外的计算列更清晰,更易读,更易于维护。

编辑:

这最终被发现为答案,并且由operator作为这篇文章的评论列出。以下是 Oracle Sql数据库的适当语法。

ALTER TABLE emps MODIFY (FULL_NAME VARCHAR2(50) GENERATED ALWAYS AS (first_name || ' ' || last_name) VIRTUAL); 
原作者:
136 3

如果你在从数据库选择时需要fullname列,那么你可以在创建表employee时创建计算列。

例如:

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
原作者:
139 5

这取决于您的目的,是否确实需要向数据库添加新列,或者您只需要根据需要查询“full name”。

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

SELECT firstname + ' ' + lastname AS FullName FROM employees

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

原作者:
...