我有一个问题,在列中找到精确字符串匹配的最佳方法是什么。
我尝试使用locate('needle', 'haystack') > 0.
这个问题是,例如,如果我试图找到的字符串类似于'Ed',但是在blob或text列中,我有一个字符串表示'我住',locate()会返回6.然而,这不是我要求的。在完全匹配中,最好使用LIKE ''
,但是,LIKE存在性能问题,因此,它不是一个可行的解决方案。
我是否可以使用LOCATE()
进行完全匹配?
答案 0 :(得分:3)
您可以使用:
WHERE CONCAT(' ', column, ' ') LIKE BINARY '% string_to_find %'
或使用LOCATE:
WHERE LOCATE(BINARY ' Ed ', CONCAT(' ', column, ' '))
使用BINARY将强制进行精确的大小写匹配。我认为LOCATE或LIKE的表现非常相似。请参阅小提琴here。