1

我有一个问题,在列中找到精确字符串匹配的最佳方法是什么。

我尝试使用locate('needle', 'haystack') > 0.这个问题是,例如,如果我要查找的字符串类似于“Ed”,但在 blob 或文本列内,我有一个字符串表示“我住过”,locate() 会返回 6. 但是,这不是我要问的。在精确匹配中,最好使用LIKE '',但是,LIKE 存在性能问题,因此,它不是一个可行的解决方案。

有没有一种方法可以LOCATE()用来进行精确匹配?

4

1 回答 1

3

你可以使用这个:

WHERE CONCAT(' ', column, ' ') LIKE BINARY '% string_to_find %'

或使用定位:

WHERE LOCATE(BINARY ' Ed ', CONCAT(' ', column, ' '))

使用 BINARY 将强制进行精确的大小写匹配。我认为 LOCATE 或 LIKE 的表现会非常相似。请在此处查看小提琴。

于 2013-03-11T21:07:35.770 回答