我使用Symfony和Doctrine与PostgreSQL后端,我想使用PostgreSQL ~
运算符来获得POSIX正则表达式的全部功能,而不是受限的LIKE
。
我想写这样的东西
entityManager->createQuery(
'SELECT e FROM MyBundle:Entity e WHERE e.name ~ :name'
)->setParameters(
array( "name" => "some regex here" )
)->getResult();
我已经找到了this example和官方文档。然而,它们只科普 * 自定义函数 *。但是我不需要一个计算为某个值的函数(或项),而是一个 * 自定义 predicate *。即使我创建了一个自定义的DQL函数--比如REGEXP
--并带有两个在SQL级别转换为~
的参数,DQL解析器仍然需要一个运算符。因此,单独使用WHERE REGEXP( a, b )
会产生DQL解析错误,而WHERE REGEXP( a, b ) = true
会满足DQL解析器的要求,但会在SQL级别上转换为疯狂的WHERE a ~ b = TRUE
。
有什么办法吗?
1条答案
按热度按时间b1payxdu1#
我设法像这样手动运行查询: