假设我在列fullname
示例:
Mr Robert
Mr Frnk Perk
Mr Grenille Ta
Mrs Fraes Kin
Isoel Newto
Mr Iin McLen
Keh Farringn
Mr Sepen Taor
Peer Snce
Mr Plip Luon
Mr Andew Macie
Mr Timhy Waers
Mrs Juiet Wriht
Kaye Ashwth
Dr Meryn Wiseman
如何仅提取标题'Mr','Mrs','Dr',' '
等。如果没有特定名称的标题,则应该是原样。
答案 0 :(得分:0)
您可以将substring方法与解码一起使用。
DECODE (TRIM(SUBSTR(string,0 ,3)), 'Mr', 'Mr', 'Mrs', 'Mrs','Dr', 'Dr', '')
假设你正在使用oracle。请指定您正在使用的数据库。
答案 1 :(得分:0)
这是使用正则表达式的一些小片段:
REGEXP_SUBSTR(p.full_name,'^ \ S +',1,1) - 这将从开头到第一个空格提取整个文本。
REGEXP_LIKE(REGEXP_SUBSTR(p.full_name,'^ \ S +',1,1),'^(Mr | Mrs | Dr)$') - 检查提取的文本是先生还是夫人或博士
WITH people AS
(
SELECT
DECODE(LEVEL
,1, 'Mr Robert'
,2, 'Mr Frnk Perk'
,3, 'Mr Grenille Ta'
,4, 'Mrs Fraes Kin'
,5, 'Isoel Newto'
,6, 'Mr Iin McLen'
,7, 'Keh Farringn'
,8, 'Mr Sepen Taor'
,9, 'Peer Snce'
,10, 'Mr Plip Luon'
,11, 'Mr Andew Macie'
,12, 'Mr Timhy Waers'
,13, 'Mrs Juiet Wriht'
,14, 'Kaye Ashwth'
,15, 'Dr Meryn Wiseman'
) AS full_name
FROM
dual
CONNECT BY LEVEL < 16
)
SELECT
p.full_name
,CASE
WHEN REGEXP_LIKE(REGEXP_SUBSTR(p.full_name, '^\S+',1,1), '^(Mr|Mrs|Dr)$') THEN
REGEXP_SUBSTR(p.full_name, '^\S+',1,1)
ELSE
' '
END AS title
FROM
people p
给出以下结果:
FULL_NAME | TITLE
------------------------
Mr Robert | Mr
Mr Frnk Perk | Mr
Mr Grenille Ta | Mr
Mrs Fraes Kin | Mrs
Isoel Newto |
Mr Iin McLen | Mr
Keh Farringn |
Mr Sepen Taor | Mr
Peer Snce |
Mr Plip Luon | Mr
Mr Andew Macie | Mr
Mr Timhy Waers | Mr
Mrs Juiet Wriht | Mrs
Kaye Ashwth |
Dr Meryn Wiseman | Dr