我有一个PHP函数,使用ghci> reduce_tree (VNode (VLeaf 1) 2 (VNode (VLeaf 3) 4 (VLeaf 5)))
id sum
where sum t1 v t2 = t1 + v + t2
15
搜索产品名称的MySQL表列。我使用REGEXP
而不是通配符(%%),因为产品名称可以是多个单词,但我希望匹配整个单词而不是过于贪婪。对于示例ProductName “Velvet Speaker / with Kit”,应搜索“Velvet”,但“Velv”或“elvet”不应该。
我的查询的REGEXP
子句是WHERE
。
(实际上我使用的是Zend框架,所以"... WHERE ProductName REGEXP '[[:<:]]" . preg_quote($query) . "[[:>:]]'"
。)
此代码在生产中顺利运行,但现在只要涉及正斜杠,它就不匹配。 “天鹅绒”和“扬声器”匹配,但“天鹅绒扬声器/带套件”不匹配(即使它以前做过)。我最近发现了这个bug,我的预感是在MySQL或PHP版本更改期间出现的。我使用的是MySQL 5.6和PHP 5.5。我找不到另一种解释。
我不知道这是->where('ProductName ?', '[[:<:]]' . preg_quote($query) . '[[:>:]]')
的逃避问题,还是MySQL解释字边界的方式发生了变化。有没有人遇到过这个问题?有没有人建议像“Velvet Speaker / with Kit”或“Speaker / with Kit”这样的值如何在尊重单词边界时匹配?