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

时间:2014-07-14 04:05:05

标签: sql oracle concatenation oracle-sqldeveloper

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

4 个答案:

答案 0 :(得分:14)

快速前言:此答案基于此问题与SQL Server相关的原始错误标记。我不再意识到它在Oracle SQL Developer上的有效性。

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

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

修改

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

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

答案 1 :(得分:4)

如果您在从数据库中选择时始终需要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

答案 2 :(得分:1)

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

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

SELECT firstname + ' ' + lastname AS FullName FROM employees

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

答案 3 :(得分:0)

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

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