我有一个包含以下三行的表
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%'
这会给我结果,但现在我需要对上述结果做同样的事情吗?这可能吗?
答案 0 :(得分:1)
根据:http://www.postgresql.org/docs/8.1/static/functions-matching.html:
SELECT name FROM clients WHERE name ~* 'help center test \\[.*?\\]'
只是为了澄清〜*是不区分大小写的匹配,因此不需要对名称进行lower()函数调用。这将匹配所有开始“帮助中心测试[”然后有n个字符,最后以“]”结尾的行(当然,两者都没有双引号)。