使用错误的引用样式运行SQL语句

时间:2017-06-23 05:55:43

标签: mysql sql

我试图在phpMyAdmin中运行查询,但由于报价问题,它无法运行。我的表中的值是指定英寸,例如4",6"等等。我的查询是根据该大小列中的值设置一个字段,但它没有运行,因为在由于单引号,它认为当前格式的英寸值是列。

如果所有值已经有了#34;我怎么能在phpMyAdmin中运行它?在价值的最后?

UPDATE `stagingSurvey`
SET `totalCost` = 330
WHERE `meterSize` = `3"`
OR `meterSize` = `4"`
OR `meterSize` = `5"`
OR `meterSize` = `6"`
OR `meterSize` = `7"`
OR `meterSize` = `8"`
OR `meterSize` = `9"`
OR `meterSize` = `10"`
OR `meterSize` = `11"`
OR `meterSize` = `12"`;

UPDATE `stagingSurvey`
SET `totalCost` = 175
WHERE `meterSize` = `5/8"`
OR `meterSize` = `3/4"`
OR `meterSize` = `1"`
OR `meterSize` = `1 1/2"`
OR `meterSize` = `2"`;

1 个答案:

答案 0 :(得分:1)

您不能使用反引号来转义列值/字符串值。反引号仅对转义标识符(如列和表名)有效。

  

标识符引号字符是反引号(`)。   https://dev.mysql.com/doc/refman/5.7/en/identifiers.html

在您的情况下,您在字符串值中使用",因此您无法直接使用"来转义字符串值。一个简单的解决方案是使用'而不是反引号。

您也可以使用"来转义字符串值,但您必须转义"值:\"

  

字符串是一个字节或字符序列,包含在单引号(')或双引号(“)字符中。
  https://dev.mysql.com/doc/refman/5.7/en/string-literals.html

在您的情况下,您只需使用'来转义字符串值:

UPDATE `stagingSurvey`
SET `totalCost` = 330
WHERE `meterSize` = '3"'
    OR `meterSize` = '4"'
    OR `meterSize` = '5"'
    OR `meterSize` = '6"'
    OR `meterSize` = '7"'
    OR `meterSize` = '8"'
    OR `meterSize` = '9"'
    OR `meterSize` = '10"'
    OR `meterSize` = '11"'
    OR `meterSize` = '12"';

UPDATE `stagingSurvey`
SET `totalCost` = 175
WHERE `meterSize` = `5/8"`
    OR `meterSize` = '3/4"'
    OR `meterSize` = '1"'
    OR `meterSize` = '1 1/2"'
    OR `meterSize` = '2"';