1

我正面临 MySQL,UNCOMPRESS 功能的问题。

我有一个名为useruser_details存储COMPRESS值的表。在这种情况下,在从我搜索值之前,user_details我必须解压缩它。

但问题是在我做 UNCOMPRESS之后,搜索变得区分大小写

喜欢..例如

如果我在 sql 下尝试,它只会搜索包含CAPITAL TESTING 单词的值并忽略小写测试单词

SELECT * FORM user WHERE UNCOMPRESS(user_details) LIKE '% TESTING %'。

我想要不区分大小写的搜索。

4

2 回答 2

3

但问题是在我解压缩之后,搜索变得区分大小写。

这是因为COMPRESS()“压缩字符串并将结果作为二进制字符串返回。 ”(强调我的)

当您对二进制字符串执行 LIKE 操作时,将执行二进制比较(区分大小写)。

您可以通过在语句 CAST()周围放置一个来规避这一点。COMPRESS()

但你可能一开始就不应该这样做。这是搜索大量数据的一种极其低效的方法。MySQL 必须为这个操作解压缩每一行,并且没有机会使用它的任何内部优化方法,如索引。

不要COMPRESS()一开始就使用。

于 2013-05-20T07:21:28.500 回答
2

试试这个:

SELECT * FROM `user` WHERE LOWER(UNCOMPRESS(user_details)) LIKE '%testing%'

但正如Pekka指出的那样,它的效率非常低。如果您使用 MyIsam 引擎,另一种选择是myisampack,它压缩了孔表并且它仍然可以查询。

于 2013-05-20T07:22:09.250 回答