我正在使用PostgreSQL,我有以下格式的名单列表:
"Abbing, Mr. Anthony"
"Abbott, Mr. Rossmore Edward"
"Abbott, Mrs. Stanton (Rosa Hunt)"
我想提取标题(即“先生”,“太太”)。它总是在逗号和点之间。
我只是正则表达式的新手,这是我正在尝试使用但我没有得到正确的答案。
SELECT SUBSTRING(name from ',..')
我得到“,M”作为答案。
我认为这是一个非常简单的修复方法。
由于
答案 0 :(得分:1)
substring(name from '(, (Mr)(s){0,1}\.)')
将摘录, Mr.
或, Mrs.
。请注意整个表达式的括号。 substring( ... from ..)
将返回正则表达式中第一个组的匹配项。由于我使用(Mr)
和(s)
来匹配标题,因此我必须将所有内容放在括号之间,以使substring()
返回整个模式
删除可以使用', '
trim()
trim(substring(name from '(, (Mr)(s){0,1}\.)'), ', ')
答案 1 :(得分:0)
尝试
SELECT SUBSTRING(name from ',\s([^\.]+)\.')
答案 2 :(得分:0)
您可以使用position
和substring
功能执行此操作:
SELECT samplename
,trim(substring(samplename, position(',' IN samplename) + 1
, position('.' IN samplename) - position(',' IN samplename))) AS initials
FROM test