好的,首先请允许我提一下,这不是我的“第一个查询”或其他任何内容,我已经使用PHP和MySQL多年了。
我最近遇到的问题真的很奇怪。
SELECT colNameA FROM myTable WHERE colNameB LIKE "G\_%";
此查询的目的是从表中获取前缀为G _的所有行。
该查询在Windows和Linux机上完美运行,在64位上运行MySQL 5.5(直接在MySQL cli中执行)。然而,当它在32位盒子上执行时(在Linux和Windows上测试) - 它呈现一个因为它将G_%视为列名,显然不是这种情况。
我花了几个小时研究这个和我的生活 - 我无法得到解释(或对某些MySQL var的引用)为什么在32位MySQL版本上双引号扮演“严重重音”符号(`)的角色,在64位版本上,它们扮演引号的角色(他们应该这样做)。
我知道我可以继续使用单引号替换双引号,但在这种情况下,这对我来说并不是真正的解决方案。我正在使用一个基于大量查询构建的平台,我不能花一周左右的时间来转换引号。
我认为这不重要,但对于测试我使用了以下操作系统:
用于测试的MySQL版本是5.5.42,5.5.41,5.5.24