MySQL双引号在哪里

MySQL双引号在哪里,mysql,64-bit,quotes,Mysql,64 Bit,Quotes,好的,首先请允许我提到,这不是我的“第一个查询”或任何东西,我已经使用PHP和MySQL多年了 我最近遇到的问题真的很奇怪 SELECT colNameA FROM myTable WHERE colNameB LIKE "G\_%"; 此查询的目的是从表中获取前缀为G_3;的所有行 该查询在Windows和Linux机器上运行良好,在64位上运行MySQL 5.5(直接在MySQL cli中执行)。但是,当它在32位框(在Linux和Windows上测试)上执行时,它会呈现一个字符串,因为它

好的,首先请允许我提到,这不是我的“第一个查询”或任何东西,我已经使用PHP和MySQL多年了

我最近遇到的问题真的很奇怪

SELECT colNameA FROM myTable WHERE colNameB LIKE "G\_%";
此查询的目的是从表中获取前缀为G_3;的所有行

该查询在Windows和Linux机器上运行良好,在64位上运行MySQL 5.5(直接在MySQL cli中执行)。但是,当它在32位框(在Linux和Windows上测试)上执行时,它会呈现一个字符串,因为它将G_百分比视为列名,显然不是这样

我花了数小时研究这一点,并且为了我的一生——我无法得到一个解释(或对某些MySQL变量的引用),为什么在32位MySQL版本中,双引号扮演“严重重音”符号(`)的角色,而在64位版本中,双引号扮演引号的角色(它们应该扮演引号的角色)

我知道我可以直接用单引号替换双引号,但在这种情况下,这并不是一个真正的解决方案。我正在使用一个包含大量查询的平台,我不能花一周左右的时间来转换报价

我认为这无关紧要,但对于测试,我使用了以下操作系统:

  • CentOS 6.6 32位
  • CentOS 6.6 64位
  • Windows 7 32位
  • Windows 7 64位

用于测试的MySQL版本是5.5.42、5.5.41、5.5.24

忘了提到我在所有MySQL版本上都检查了“sql_模式”,并且“ANSI_引号”不存在
(单引号)是sql标准,所以运行查询是很奇怪的(考虑到ANSI模式没有启用,它可能没有启用)。在给定的特定情况下,您可以始终求助于
substr(colnameB,1,2)='G_quot
,并选择适合的引号(尽管子字符串可能会阻止在相应列上使用索引)。我不同意@collapsar,你可以在官方文件中清楚地看到,单引号用作文字,除非启用了ANSI_引号,也就是双引号。你可以参考:我指的是ANSI标准,不是mysql文档。好吧,我想你刚刚回答了这个问题。sql_mode()是键,而不是32/64位。您是否尝试检查它是否与您的配置不同(
SELECT@@sql\u mode;
)?