我有一个员工表,我想添加第三列作为名字和姓氏连接后的全名,叫做“FullName”。我该如何实现这一点,而不会丢失前两列中的任何数据?
我有一个员工表,我想添加第三列作为名字和姓氏连接后的全名,叫做“FullName”。我该如何实现这一点,而不会丢失前两列中的任何数据?
简单说明:本答案基于最初有关SQL Server的错误标签。我不再了解它在Oracle SQL Developer上的有效性。
ALTER TABLE Employees ADD FullName AS (FirstName + ' ' + LastName)
尽管在实践中,我建议您在SELECT
中执行该操作。这在某种程度上是个人偏好,但我倾向于认为,在终端查询中执行操作比存储额外的计算列更清洁、更易读和更易于维护。
编辑:
这最终被发现是答案,并由OP作为评论列在了此帖子中。以下是Oracle Sql数据库的适当语法。
ALTER TABLE emps MODIFY (FULL_NAME VARCHAR2(50) GENERATED ALWAYS AS (first_name || ' ' || last_name) VIRTUAL);
如果你需要在每次从数据库中选择数据时都包含完整姓名列,那么你可以在创建员工表时创建一个计算列。
例如:
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
这取决于您的目的,您是否真的需要向数据库添加新列,还是只需根据需要查询“全名”。
要即时查看它,只需运行以下查询:
SELECT firstname + ' ' + lastname AS FullName FROM employees
此外,您还可以创建一个简单的存储过程来存储它。
SELECT CONCAT(FirstName, ' ', LastName) as FullName
FROM table_name
' '
,否则它会返回没有空格的 JohnSmith
。例如:SELECT CONCAT(FirstName, ' ', LastName) as FullName From Table_name
。 - Jacky' '
,否则它会返回没有空格的 JohnSmith
。例如 SELECT CONCAT(FirstName, ' ', LastName) as FullName From Table_name
。 - undefinedselect *
from TABLE_name
where (Column1+Column2) in (11361+280,11365+250)