我有一个名为marc的表和一个名为tag的列,该列包含如下文本:
"|a john dumas .|d 1941|e united states|=^A22306"
我想读取这段文字,只提取一个介于|a
和|d
之间的子串。
案文应为:john dumas.1941
我试过但没有成功:
select regexp_replace(tag, '(.*)_[^|][^a][^d]*$', '\1')
from marc where id='10825700016';
有人能帮我解决这个问题吗
我有一个名为marc的表和一个名为tag的列,该列包含如下文本:
"|a john dumas .|d 1941|e united states|=^A22306"
我想读取这段文字,只提取一个介于|a
和|d
之间的子串。
案文应为:john dumas.1941
我试过但没有成功:
select regexp_replace(tag, '(.*)_[^|][^a][^d]*$', '\1')
from marc where id='10825700016';
有人能帮我解决这个问题吗
2条答案
按热度按时间rdlzhqv91#
您可以使用
substring()
提取|a
和|e
之间的部分。然后使用
replace()
删除.|d
iezvtpos2#
我想读这段文字,只提取一个子字符串,这是之间|a和|d.
您可以使用字符串函数(如
CONCAT
和substring
)来完成此操作,如下面的DBFIDDLEtrim函数还将删除
john
之前和dumas
之后的前导空格输出: