Sql :如何将列的单个值拆分为两个,并随长度一起返回值

Sql :如何将列的单个值拆分为两个,并随长度一起返回值,sql,oracle,Sql,Oracle,我有一个表“test”,在name列中有名字和姓氏。如何拆分名字、姓氏以及返回名字和姓氏的长度。 例如: name hello world Thomas Edison Christopher Columbus 我希望结果如下: First_name FirstName_length last_name LastName_length hello 5 world 5 Thomas 6

我有一个表“test”,在name列中有名字和姓氏。如何拆分名字、姓氏以及返回名字和姓氏的长度。 例如:

name
hello world
Thomas Edison
Christopher Columbus
我希望结果如下:

First_name    FirstName_length    last_name    LastName_length
hello          5                   world       5 
Thomas         6                   Edison      6
Christopher    11                  Columbus    8

。。同样

只需将表名和列名替换为实际名称即可

select substr("name", 1, instr("name", ' ')-1) first_name,
       length(substr("name", 1, instr("name", ' ')-1)) First_Name_length ,
       substr("name",instr("name", ' ')+1) Last_Name,
       length(substr("name",instr("name", ' ')+1)) Last_name_length
from table_name
O/p


在问这个问题之前,我想知道您尝试过什么查询。它是否有效。标记为answer谢谢你的回复,但我有一列“name”,我想拆分这些值,并得到每个值的长度。在上面的查询中,没有提到列名,所以它不适用。op没有要求这样做。谢谢所有为我工作的人。这个查询是由sqlfiddle提供的:选择substr(“name”,1,instr(“name”),instr(“name”),1)first_name,length(substr(“name”,1,instr(“name)”)-1)first_name_length,substr(“name”,instr(“name”),Last_name,长度(substr(“name”,instr(“name)”,“”)+1)表中的姓氏长度
select split_part(name,' ',1) as first_name,
 length(split_part(name,' ',1)) as firstname_length,
 split_part(nme,' ',2) as last_name, 
 length(split_part(name,' ',2)) as lasttname_length from table_name 
select substr("name", 1, instr("name", ' ')-1) first_name,
       length(substr("name", 1, instr("name", ' ')-1)) First_Name_length ,
       substr("name",instr("name", ' ')+1) Last_Name,
       length(substr("name",instr("name", ' ')+1)) Last_name_length
from table_name
FIRST_NAME  First_LENGTH    LAST_NAME   LAST_LENGTH
hello            5           world      5
Thomas           6           Edison     6
Christopher     11           Columbus   8