MySQL解压缩问题

时间:2013-05-20 07:17:08

标签: mysql

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

我的表名为useruser_details存储 COMPRESS 值。在这种情况下,在搜索user_details i中的值之前必须 UNCOMPRESS

但问题是在我 UNCOMPRESS 之后,搜索变为 案例敏感

喜欢......例如

如果我在sql下面尝试,它只会搜索包含 CAPITAL TESTING字忽略小案例测试字

的值
  

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

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

2 个答案:

答案 0 :(得分:3)

  

但问题是在我做UNCOMPRESS之后,搜索变得具有案例感。

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

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

您可以通过在COMPRESS()声明周围添加CAST()来避免这种情况。

但你可能不应该首先这样做。这是一种极其低效的搜索大量数据的方法。 MySQL必须为此操作解压缩每个行,并且无法使用任何内部优化方法(如索引)。

首先不要使用COMPRESS()

答案 1 :(得分:2)

试试这个:

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

但是,因为 Pekka 指向得很好或者效率很低。如果您使用MyIsam引擎另一个替代方案是myisampack,它会压缩空洞表并且仍然可查询。