-1

我有一个以 UTF-8 编码的 MySQL 数据库,其中包含英语和匈牙利语文本。

我正在研究搜索功能,结果是可以接受的,除了一件事:

搜索包含“á”、“é”、“í”、“ó”、“ö”、“ő”、“ú”、“ü”、“ű” 的字符串的结果是它们的所有出现,但也显示了“a”、“e”、“i”、“o”、“u”的结果。这样搜索就不会精确,因为它会产生很多不需要的记录,例如,我们得到了所有“bar”的“bar”(显然不一样)。

我以一种简单的方式通过 LIKE 进行了搜索(尽管它对于全词搜索或确切的词序有很多变体,但基本是相同的):

SELECT * FROM table WHERE coloumn LIKE 'word'

我怎样才能逃避不想要的结果?我不是 SQL 专家,也从未进行过这样的搜索,所以我需要一点帮助......

谢谢!

4

1 回答 1

0

不确定这是否可行,但您可以尝试使用

CAST(value1 AS BINARY) = CAST(value2 AS BINARY)

做一个直接比较和

POSITION( CAST(value1  as BINARY) IN CAST(value2  as BINARY))

检查 value1 是否是 value2 的子字符串。
MySQL 不会为它们使用索引,因此您可能应该在正常的WHERE.

于 2012-07-27T18:45:21.090 回答