PostgreSql删除null和空字符串

时间:2017-10-04 08:55:42

标签: sql postgresql

我有这样的查询:

$stmt = $db->prepare("SELECT location.id FROM location WHERE location.city = :city AND location.country = :country");
$stmt->execute(array(':city' => $cityVar, ':country' => $countryVar));
$locationID = $stmt->fetchColumn();

我遇到了一个问题,因为在数据库中空city列有时为空,有时是空字符串(我知道它是错误的,但是没有办法改变它)。当我的$cityVar变量为空时,我需要获取所有需要country的条目,但现在我只得到city列为空字符串的那些(我不知道那些{ {1}}为空)。

我提出的唯一解决方案是修改查询本身,例如:

city

但我想知道是否有更合法的方法来解决这个问题。注意:我需要搜索更多列,例如$sql = "SELECT location.id FROM location WHERE location.country = :country "; if ($cityVar) { $sql .= "AND location.city = :city "; }

1 个答案:

答案 0 :(得分:2)

使用COALESCE(city, '') - 它会将NULL字符串强制为空字符串""。如果您有很多城市和大量的查询,您可以在合并字段上创建索引以促进搜索。

"SELECT location.id FROM location WHERE COALESCE(location.city, '') = :city "