将表中的标记化字符串插入到其他表中

时间:2018-03-26 16:41:13

标签: oracle oracle11g

记下SQL语句,将Student表的数据插入MM_Student,并附有以下指南:

FullName 由三个名称分区组成,例如

FirstName:第一个空格字符前FullName左侧的第一个单词

MiddleName: FullName左侧的第二个和第三个单词(如果存在)

FamilyName: FullName的最后一个单词始终被视为Family或LastName。

每个名称都必须包含姓氏。

create table Student
(StuId CHAR(9),
FullName VARCHAR2(30) NOT NULL,
Address VARCHAR2(20),
City VARCHAR2(15),
PostalCode VARCHAR2(6),
Constraint PK_Stuid PRIMARY KEY (StuId)
);



create table MM_Student
(StuId CHAR(9),
FirstName VARCHAR2(10) NOT NULL,
MiddleName VARCHAR2(20),
FamilyName VARCHAR2(10) NOT NULL,
Address VARCHAR2(20),
City VARCHAR2(15),
PostalCode VARCHAR2(5),
Constraint PK_Stuid PRIMARY KEY (StuId)
);

1 个答案:

答案 0 :(得分:0)

如果FULLNAME总是由3个部分组成(这就是你所说的),那么使用Representable正则表达式函数就相对简单了:

REGEXP_SUBSTR

使用经典 SQL> with test (fullname) as 2 (select 'Metro Goldwyn Mayer' from dual 3 ) 4 select regexp_substr(fullname, '\w+', 1, 1) first_name, 5 regexp_substr(fullname, '\w+', 1, 2) middle_name, 6 regexp_substr(fullname, '\w+', 1, 3) last_name 7 from test; FIRST_NAME MIDDLE_NAME LAST_NAME -------------------- -------------------- -------------------- Metro Goldwyn Mayer SQL> + SUBSTR组合做这件事没问题,但是 - 这不是漂亮的解决方案:

INSTR

这是你任务的第一部分;自己编写INSERT语句。如果你无法使它工作,请编辑你的初始信息,提供你设法工作的代码,解释什么是错的,有人会帮助。