我有4列的表。
user_id, user_name, password, full_name
706 , 29682 , 29682 , Nikolay Valeriev Rusanov
707 , 30211 , 30211 , Valentin Ognyanov Karamanchev
当我进行选择时,我只需要显示 full_name 列中的姓氏。
查询应返回
user_id, user_name, password, full_name
706 , 29682 , 29682 , Rusanov
707 , 30211 , 30211 , Karamanchev
用"空格"分开。 我不能使用substr,因为列中的每个记录都有不同的长度,而且我有超过10000行。
你们可以给我一些SQL查询怎么做?
答案 0 :(得分:0)
<强> 1 强>
使用简单的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>
<强> 2 强>
使用REGULAR EXPRESSION
:
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>