[英]PostgreSql remove difference between null and empty string
我有這樣的查詢:
$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
列有時為null,有時為空字符串(我知道這是錯誤的,但是沒有辦法更改)。 當我的$cityVar
變量是空的,我需要得到所需要的所有條目country
,但現在我得到的只有那些city
列是空字符串(我不明白那些city
為空)。
我想出的唯一解決方案是修改查詢本身,例如:
$sql = "SELECT location.id FROM location WHERE location.country = :country ";
if ($cityVar) {
$sql .= "AND location.city = :city ";
}
但我想知道是否還有更多合法的方法來解決這個問題。 注意:還有更多列,例如city
,需要搜索。
使用COALESCE(city, '')
-將NULL
字符串強制轉換為空字符串""
。 如果您有很多城市並且對它們有很多查詢,則可以在合並字段上創建索引以促進搜索。
"SELECT location.id FROM location WHERE COALESCE(location.city, '') = :city "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.