也许创建一个视图就足够了:
CREATE VIEW table_name_v
SELECT Full_Name,
LEFT(Full_Name,CHARINDEX(' ',Full_Name )-1) AS First_Name,
RIGHT(Full_Name, LEN(Full_Name)- CHARINDEX(' ', Full_Name)) AS Last_Name
FROM table_name
然后在后续查询中不使用表名,而是使用视图
SELECT * FROM table_name_v
否则您面临的问题是,如果您将名字和姓氏列添加到此表中,您现在最终需要维护 3 列,或者您可能需要替换使用 full_name 的数据输入屏幕开始使用名字和姓氏列。
如果您确实想通过添加列来继续,您可以尝试使用“计算列”,这将避免更改数据输入屏幕等的必要性。
CREATE TABLE mytable(
full_name VARCHAR(15) NOT NULL
);
INSERT INTO mytable(full_name) VALUES ('fred flintstone');
select * from mytable
| full_name |
| fred flintstone |
alter table mytable
add
first_name as LEFT(Full_Name,CHARINDEX(' ',Full_Name )-1)
, Last_Name as RIGHT(Full_Name, LEN(Full_Name)- CHARINDEX(' ', Full_Name))
select * from mytable
| full_name |
first_name |
Last_Name |
| fred flintstone |
fred |
flintstone |
db计算列的小提琴here
如果您确实想要存储这 2 个单独的列(而不是计算它们),那么您需要将这些列添加到您的表中并运行更新语句来填充它们,如下所示:
alter table mytable
add
first_name varchar(100)
, last_name varchar(100)
update mytable
set
first_name = LEFT(Full_Name,CHARINDEX(' ',Full_Name )-1)
, Last_Name = RIGHT(Full_Name, LEN(Full_Name)- CHARINDEX(' ', Full_Name))
dbfiddle 用于添加列和更新here