通过表达式或正则表达式方式在sql表达式中查找特定值

时间:2020-10-11 06:13:19

标签: postgresql

我在字段中有以下数据。

Sample data 
-------------------
cid    value
--------------------
1     'This is test message for&nbsp;*NAME_FIRST*&nbsp;<br />*NAME_LAST*<br />We should strict to rules for inspections.<br /><br />Thanks,
2     'Hello &nbsp;*NAME_FIRST*&nbsp;<br />*NAME_LAST*<br />Hope you are doing good.<br /><br />Thanks,'

我想查找所有具有 NAME_FIRST NAME_LAST 模式的数据。我写了以下选择查询,但是出了点问题,我无法获得结果。

 SELECT * FROM template_custom_texts tct WHERE tct.cid = 1 AND tct.value = E'\\*(NAME_FIRST|NAME_LAST)\\*';

我也使用了另一种方法:

SELECT * FROM template_custom_texts tct WHERE tct.cid = 1 AND regexp_matches(tct.value, '(NAME_FIRST|NAME_LAST)', 'g');

在两个查询结果中均未到达。

1 个答案:

答案 0 :(得分:0)

尝试以下查询:

SELECT * 
FROM template_custom_texts 
WHERE cid = 1 AND value ~ 'NAME_FIRST|NAME_LAST';

请记住,此查询区分大小写,您可以将~替换为~*,以区分大小写。

也请阅读PostgreSQL模式匹配的文档:https://www.postgresql.org/docs/9.3/functions-matching.html