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