我有一个存储替换的表,它包括两个字段,第一个存储单词,第二个存储替换。我知道创建表不是一种合适的方法,但是它已经存在并且已被其他系统使用。
该表如下所示:
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 <>小提琴,到目前为止我已经尝试过。
谢谢您的帮助:)
您不需要正则表达式。如果我正确理解了您想输入的单词,请搜索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');