Postgresql中的REGEXP_LIKE

问题描述 投票:-3回答:1

我有一个存储替换的表,它包括两个字段,第一个存储单词,第二个存储替换。我知道创建表不是一种合适的方法,但是它已经存在并且已被其他系统使用。

该表如下所示:

WORD        SUBS_LIST
------------------------------------
MOUNTAIN    MOUNTAIN, MOUNT, MT, MTN
VIEW        VIEW, VU
FIFTH       V, 5TH
YOU         EWE, U , YEW
ROW         ROW , ROE
ONE         UN , ONE

然后,当一个名字出现时,根据表格替换它。我能够使用regexp_like在Oracle上进行操作。但是,我想在Postgresql中应用相同的内容。我尝试使用〜替换regexp_like和regexp_matches,但没有成功。

请找到here DB <>小提琴,到目前为止我已经尝试过。

谢谢您的帮助:)

regex postgresql sql-like regexp-like
1个回答
0
投票

您不需要正则表达式。如果我正确理解了您想输入的单词,请搜索sub_list中的元素,然后为此返回word列。最好通过将(难看的)逗号分隔列表转换为数组,然后使用ANY运算符来完成此操作:

select word
from the_table
where 'mount' = any(string_to_array(subs_list, ','));

以上内容将正确处理,周围的空白-不确定这是由于格式化而引起的,还是真的以这种方式存储了列表。如果确实需要处理空格,则可以使用以下命令:

select word
from the_table
where exists (select *
              from unnest(string_to_array(subs_list, ',')) as x(subs)  
              where trim(x.subs) = 'mount');
© www.soinside.com 2019 - 2024. All rights reserved.