我有一列,我想把它分成三列
Name
Jack,Jon Man就像这样
first_name , middle_name , last_name
jack , Jon , Man名字后面跟一个逗号,中间名字后面跟一个空格。
发布于 2015-12-23 15:20:17
使用REGEXP_SUBSTR()函数很容易做到这一点。Find out more。
此查询标识字母字符的第一个、第二个和第三个匹配项。只要有一个分隔符,它是什么都无关紧要。
SQL> select col1
2 , regexp_substr(col1, '[[:alpha:]]+') first_name
3 , regexp_substr(col1, '[[:alpha:]]+', 1, 2) middle_name
4 , regexp_substr(col1, '[[:alpha:]]+', 1, 3) last_name
5 from t34;
COL1 FIRST_NAME MIDDLE_NAM LAST_NAME
------------------------------ ---------- ---------- ----------
Jack,Jon Man Jack Jon Man
SQL> 发布于 2015-12-23 16:30:55
示例数据:
name
---------
Jack,Jon Man
Dave,Mike Doe
Chris,Brad Duke查询:
select substr(name, 0, instr(name, ',')-1) as first_name,
substr(name, instr(name,',',1,1)+1, instr(name, ',')-1) as middle_name,
substr(name, instr(name,' ',1,1), instr(name, ' ')+10) as last_name
from sample_data输出:
first_name middle_name last_name
---------------------------------------
Jack Jon Man
Dave Mike Doe
Chris Brad Duke祝你好运,圣诞快乐!
发布于 2015-12-23 15:58:03
如果我们只是选择数据,可以使用简单的子串函数来完成。例如
create table #Random
(
Name Varchar(50)
)
insert into #random values ('Jack,Jon Man')
select substring(Name,1,4)'First_Name',
substring(Name,6,3)'Middle_Name',
substring(Name,10,3)'Last_Name'
from #Randomhttps://stackoverflow.com/questions/34429919
复制相似问题