关于sql:添加一个表示两个其他Varchar列的串联的列

Add a Column that Represents a Concatenation of Two Other Varchar Columns

我有一个Employees表,我想添加第三列,作为名为"fullname"的名字和姓氏的串联值。如何在不丢失前两列中任何一列的任何数据的情况下完成此操作?


快速前言:这个答案是基于这个问题与SQL Server相关的最初不正确的标签。我不再知道它在OracleSQL开发人员上的有效性。

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

尽管在实践中,我建议你在你的SELECT上做这个手术。这有点像个人偏好,但我倾向于认为在您的最终查询中做一些事情比存储额外的计算列更干净、更可读、更易于维护。

编辑:

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

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


如果从数据库中选择时一直需要全名列,则可以在创建表Employee时创建计算列。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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


这取决于您的目的,您是否真的需要向数据库中添加一个新列,或者您只需要根据需要查询出"全名"。

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

江户十一〔一〕号

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


(对于单个结果,在Where条件下使用等于)

1
2
3
SELECT *
FROM TABLE_NAME
WHERE (Column1+Column2) IN (11361+280,11365+250)