Sql 如何分割记录并显示其特定部分
我有一个4列的表Sql 如何分割记录并显示其特定部分,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个4列的表 user_id, user_name, password, full_name 706 , 29682 , 29682 , Nikolay Valeriev Rusanov 707 , 30211 , 30211 , Valentin Ognyanov Karamanchev 当我进行选择时,我只需要显示全名列中的姓氏 查询应返回 user_id, user_name, password, full_name 706
user_id, user_name, password, full_name
706 , 29682 , 29682 , Nikolay Valeriev Rusanov
707 , 30211 , 30211 , Valentin Ognyanov Karamanchev
当我进行选择时,我只需要显示全名列中的姓氏
查询应返回
user_id, user_name, password, full_name
706 , 29682 , 29682 , Rusanov
707 , 30211 , 30211 , Karamanchev
它们被空间隔开。
我不能使用substr,因为列中的每个记录都有不同的长度,并且我有10000多行
你们能给我一些sql查询怎么做吗。
使用简单的SUBSTR和INSTR:
二,。
使用正则表达式:
@费尔伯特告诉我答案是…非常感谢,完美的答案!非常感谢!你可以把它标出来。
SQL> WITH DATA AS(
2 SELECT 'Nikolay Valeriev Rusanov' full_name FROM dual UNION ALL
3 SELECT 'Valentin Ognyanov Karamanchev' FROM dual UNION ALL
4 SELECT 'no reason' FROM dual)
5 SELECT SUBSTR(full_name,instr(full_name,' ',-1)+1) last_name
6 FROM DATA
7 /
LAST_NAME
-----------------------------
Rusanov
Karamanchev
reason
SQL>
SQL> WITH DATA AS(
2 SELECT 'Nikolay Valeriev Rusanov' full_name FROM dual UNION ALL
3 SELECT 'Valentin Ognyanov Karamanchev' FROM dual UNION ALL
4 SELECT 'no reason' FROM dual)
5 SELECT regexp_substr (full_name, '\w*$') last_name
6 FROM DATA
7 /
LAST_NAME
-----------------------------
Rusanov
Karamanchev
reason
SQL>