如何在where子句中使用regexp来过滤Postgres中的行?

rshar

我在postgres 11.0中有下表

col1            col2    col3                               col4
NCT00001723 4894402     xenical (orlistat)capsules         xenical
NCT00001724 4894403     xenical (orlistat)capsules         orlistat
NCT00001725 4894404     capsules                           capsules 
NCT00001726 4894405     insulin                            ins

我想在行上方过滤,以便col3 = col4或col3的确切内容应包含在col4中。

所需的输出是:

col1            col2    col3                               col4
NCT00001723 4894402     xenical (orlistat)capsules         xenical
NCT00001724 4894403     xenical (orlistat)capsules         orlistat
NCT00001725 4894404     capsules                           capsules 

我正在尝试下面的查询来获取此输出。

SELECT
    *
FROM
    table 
where col3 = col4 or                         --exact match
regexp_matches(col3, '(.*).*\(') = col4 or   --match content before brackets
regexp_matches(col3, '.*\(.*\).*') = col4 --match content in brackets

这里的任何建议都会非常有帮助。谢谢

专线小巴

如果我正确地跟随了您,则可以使用单词边界转义\y

\y:仅在单词的开头或结尾匹配

在您的查询中:

select * from mytable where col3 ~  ('\y' || col4 || '\y')

DB Fiddle上的演示

col1 | col2 | col3 | col4     
:---------- | ------:| :------------------------- | :------- 
NCT00001723 | 4894402 | 塞尼胶囊(orlistat)| Xenical 
NCT00001724 | 4894403 | 塞尼胶囊(orlistat)| 奥利司他
NCT00001725 | 4894404 | 胶囊| 胶囊

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 where 子句中使用短名称进行过滤

来自分类Dev

如何在此查询中的where子句中过滤结果?

来自分类Dev

如何在SQL中的SUM子句中使用not in子句

来自分类Dev

Haskell-如何在where子句中使用<-

来自分类Dev

我如何在Where子句中使用IFNULL

来自分类Dev

如何在WHERE子句中使用MySql MAX()

来自分类Dev

如何在WHERE子句中使用日期范围

来自分类Dev

如何在where子句中使用NVL

来自分类Dev

我如何在where子句中使用If Else

来自分类Dev

如何在where子句中使用案例?

来自分类Dev

如何在SQL的where子句中使用sum?

来自分类Dev

如何在WHERE子句中使用日期范围

来自分类Dev

如何在where子句中使用mysql extract year

来自分类Dev

如何在Where子句中使用TimeDiff函数

来自分类Dev

如何在WHERE子句中使用CASE

来自分类Dev

我如何在Where子句中使用IFNULL

来自分类Dev

如何在MySQL的WHERE子句中使用OR&AND

来自分类Dev

如何在where子句中使用Oracle的解码功能

来自分类Dev

如何在where子句中使用While循环

来自分类Dev

如何在where子句中使用NVL

来自分类Dev

如何在WHERE子句中使用MySql MAX()

来自分类Dev

如何在SQL的Where子句中使用View元素

来自分类Dev

如何在 where 子句中使用 data_type

来自分类Dev

如何在 where 子句中使用 SOUNDS LIKE

来自分类Dev

如何在此 WHERE 子句中使用 OR?

来自分类Dev

如何在 WHERE 子句中的变量中使用 AND

来自分类Dev

如何在openquery where子句中使用子查询

来自分类Dev

如何在 SQL Server 的 where 子句中使用别名

来自分类Dev

如何在 WHERE 子句中使用别名?