所以我有一个如下列:
diagnosis
715.16 oSTEOARTHRITIS, LOWER-LEG
715.17 - OSTEOARTHRITIS, ANKLE AND FOOT
715.90 oSTEOARTHRITIS, UNSPECIFIED
716.10 - TRAUMATIC ARTHROPATHY - UNSPECIFIED
有些条目有初始破折号,有些则没有。有些人后来在字符串中有破折号。
我想用模式选择子串(在itallics中):
(任何字符)(破折号)(空格)(任何字母数字)(字符串的其余部分)
OR
(任何字符)(空格)(任何字母数字)(字符串的其余部分)
我的查询是:
select substring(diagnosis from '% #"\w%#"' for '#') from TableICDdict;
但它只返回其中包含空字符串的所有行(无错误)。关于如何实际输出提取的子串的任何想法?
由于
答案 0 :(得分:1)
使用regexp_replace()
跳过第一个空格(和空格)之前的所有字符,ltrim()
跳过其他字符 - ' - '字符串:
with t(diagnosis) as (values
('715.16 oSTEOARTHRITIS, LOWER-LEG'),
('715.17 - OSTEOARTHRITIS, ANKLE AND FOOT'),
('715.90 oSTEOARTHRITIS, UNSPECIFIED'),
('716.10 - TRAUMATIC ARTHROPATHY - UNSPECIFIED'))
select ltrim(regexp_replace(diagnosis, '.*? (.*)', '\1'), '- ') result
from t;
result
-------------------------------------
oSTEOARTHRITIS, LOWER-LEG
OSTEOARTHRITIS, ANKLE AND FOOT
oSTEOARTHRITIS, UNSPECIFIED
TRAUMATIC ARTHROPATHY - UNSPECIFIED
(4 rows)