【发布时间】:2023-03-21 18:18:01
【问题描述】:
下午好。我需要您的帮助才能正确查询数据库。
我在 DB 中有以下表格和地址,例如。
| id | street | house_nuber | city | district |
|---|---|---|---|---|
| 1 | First street | 1225 | City One | NULL |
| 2 | NULL | 25 | Small city | NULL |
| 3 | Second street | 51 | Roswell | District nine |
| 4 | Third street | 15963 | Last city | Another district |
在上表中,您可以看到我有地址。我在行中也有随机的 NULL 值。我的表目前大约有 50k 条记录。
PHP 代码用以下值填充变量
$street = 'First street';
$houseNum = 1125;
$city = 'City One';
$district = NULL;
我需要从匹配地址的数据库中返回 ID。如果我知道NULL值在哪里,查询很容易。
SELECT id FROM adress WHERE street=$street AND house_number=$houseNum AND city=$city AND district IS NULL
(通常我使用 PDO,这仅用于说明)
现在我的问题。如何进行查询,如果我无法预测,NULL 值在哪里? 我尝试使用空字符串进行查询,但是对于数据库而言,NULL 和空字符串不同,而且我总是返回错误。
谢谢你,祝你有美好的一天。
【问题讨论】:
-
当您有一个带有 ID 和附加数据列的表时,指定 ID 的查询通常是“查找”或“检索”,而指定其他列的查询是“搜索”,即你有什么。搜索的时候,你只要把你知道的东西扔到数据库里,如果你不知道,就不包括它。这可能意味着动态构建您的 SQL 语句。还有spaceship operator 可能会有所帮助。
-
嗨 Chriss Haas,我尝试申请宇宙飞船运算符,但这个运算符并没有解决我的问题。不管怎样,谢谢你的回复,我学到了一些新东西:)