MySQL:查询中的符号

时间:2015-05-09 20:35:57

标签: php mysql sql

我最近注意到MySQL查询中使用了几个我以前从未见过的奇怪符号。我从来没有使用它们,但我试图理解它们的含义。我没有找到任何关于此的信息,因为我不知道它们是如何被称呼的。

让我们说,我有这张桌子:

id  | city | population 
250 | Carlisle | 75305
  1. 这是|的内容?它的输出是什么?
  2. UPDATE cities SET population = population | 5 WHERE id = 250

    1. 更复杂的情况。
    2. UPDATE cities SET population = population & ~2 | 6 WHERE id = 250

      1. 使用“where”子句查询。这是什么WHERE子句?会选择哪些行?
      2. SELECT * FROM cities WHERE population & 2 > 0

        1. 通过PHP查询INSERT INTO中的多个值。那些%s和%u值是多少?如何知道%s或%u是否应该被置于查询中?为什么我应该使用这个而不是直接在VALUES区域中放置值的简单查询?
        2. sprintf("INSERT INTO cities (id, city, population) VALUES ('%s', '%u', '%s')", $id, $city, $population);

          感谢您的回答。

2 个答案:

答案 0 :(得分:6)

您提到的奇怪符号是按位运算符,您可能需要查看here以获取更多信息。

%s,%u等是PHP格式规范。有关完整信息,请查看here

您当然可以在PHP中创建一个字符串,并将值直接放入VALUES子句中。格式说明符可以帮助提醒相应的数据库列是什么类型。

您的示例也可以写成:

$query = "INSERT INTO cities (id, city, population) VALUES ('$id', '$city', '$population')";

答案 1 :(得分:2)

var results = items.Select(Gen<MenuItem, object>.SelectorExpr("MenuItemId"));

此查询将对每个现有UPDATE cities SET population = population | 5 WHERE id = 250 population(二进制为5)进行按位OR运算,并将结果设置回人口。

101

与第一个类似,只需要处理运算符优先级。 https://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html

sprintf用于创建具有某些固定部分和某些可变部分的字符串。 %s,%u指定可变部分的格式。 在初始字符串之后,每个逗号分隔变量表示按位置顺序放置在格式说明符中的值。

http://php.net/sprintf