我想把一列分成三列
Name Jack,Jon Man
像
first_name , middle_name , last_name jack , Jon , Man
名字后面跟逗号,中间名后面跟空格。
brgchamk1#
使用REGEXP_SUBSTR()函数很容易做到这一点。了解更多。这个查询识别第一次、第二次和第三次出现的字母字符。只要有一个分隔符,它是什么就没有关系。
REGEXP_SUBSTR()
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>
jdgnovmf2#
样本数据:
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
unftdfkk3#
如果我们只是选择数据,可以使用简单的子字符串函数来完成。
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 #Random
3条答案
按热度按时间brgchamk1#
使用
REGEXP_SUBSTR()
函数很容易做到这一点。了解更多。这个查询识别第一次、第二次和第三次出现的字母字符。只要有一个分隔符,它是什么就没有关系。
jdgnovmf2#
样本数据:
质询:
输出:
unftdfkk3#
如果我们只是选择数据,可以使用简单的子字符串函数来完成。