postgresql中的正则表达式

时间:2011-01-12 11:54:39

标签: postgresql

我有一个包含以下三行的表

                     name                     
----------------------------------------------
 user - help center test 4 [120,2010-08-19]
 test - help center test 2 [123,2010-01-19]
 help center test [20109,2010-01-01]
(3 rows)

现在我需要得到“帮助中心测试”的完全匹配,因此它应该返回第3行。我基本上需要做这个完全匹配,好像 [2010> 2010年10月1月1日] [20109,2010-01-01] 不存在消除括号和括号内的所有内容。注意括号内的结果可能是任何结果。

如果括号不在那里,我会使用类似的东西 SELECT name FROM clients WHERE lower(name) like '%call center test%'这会给我结果,但现在我需要对上述结果做同样的事情吗?这可能吗?

1 个答案:

答案 0 :(得分:1)

根据:http://www.postgresql.org/docs/8.1/static/functions-matching.html

SELECT name FROM clients WHERE name ~* 'help center test \\[.*?\\]'

只是为了澄清〜*是不区分大小写的匹配,因此不需要对名称进行lower()函数调用。这将匹配所有开始“帮助中心测试[”然后有n个字符,最后以“]”结尾的行(当然,两者都没有双引号)。