我最近注意到MySQL查询中使用了几个我以前从未见过的奇怪符号。我从来没有使用它们,但我试图理解它们的含义。我没有找到任何关于此的信息,因为我不知道它们是如何被称呼的。
让我们说,我有这张桌子:
id | city | population
250 | Carlisle | 75305
|
的内容?它的输出是什么? UPDATE cities SET population = population | 5 WHERE id = 250
UPDATE cities SET population = population & ~2 | 6 WHERE id = 250
SELECT * FROM cities WHERE population & 2 > 0
sprintf("INSERT INTO cities (id, city, population) VALUES ('%s', '%u', '%s')", $id, $city, $population);
感谢您的回答。
答案 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指定可变部分的格式。 在初始字符串之后,每个逗号分隔变量表示按位置顺序放置在格式说明符中的值。