我有一个问题,在列中找到精确字符串匹配的最佳方法是什么。
我尝试使用locate('needle', 'haystack') > 0.
这个问题是,例如,如果我要查找的字符串类似于“Ed”,但在 blob 或文本列内,我有一个字符串表示“我住过”,locate() 会返回 6. 但是,这不是我要问的。在精确匹配中,最好使用LIKE ''
,但是,LIKE 存在性能问题,因此,它不是一个可行的解决方案。
有没有一种方法可以LOCATE()
用来进行精确匹配?
我有一个问题,在列中找到精确字符串匹配的最佳方法是什么。
我尝试使用locate('needle', 'haystack') > 0.
这个问题是,例如,如果我要查找的字符串类似于“Ed”,但在 blob 或文本列内,我有一个字符串表示“我住过”,locate() 会返回 6. 但是,这不是我要问的。在精确匹配中,最好使用LIKE ''
,但是,LIKE 存在性能问题,因此,它不是一个可行的解决方案。
有没有一种方法可以LOCATE()
用来进行精确匹配?
你可以使用这个:
WHERE CONCAT(' ', column, ' ') LIKE BINARY '% string_to_find %'
或使用定位:
WHERE LOCATE(BINARY ' Ed ', CONCAT(' ', column, ' '))
使用 BINARY 将强制进行精确的大小写匹配。我认为 LOCATE 或 LIKE 的表现会非常相似。请在此处查看小提琴。