在 Perl 資料庫操作中使用 NULL 值


未定義值或 undef 用於指示 Perl 資料庫操作中的 NULL 值。你可以使用 NULL 值插入和更新列,就像使用非 NULL 值一樣。以下示例使用 NULL 值插入和更新 age 列 −

$sth = $dbh->prepare(qq {
   INSERT INTO TEST_TABLE (FIRST_NAME, AGE) VALUES (?, ?)
});
$sth->execute("Joe", undef);

在該示例中,qq{} 用於向 prepare API 返回一個帶引號的字串。但是,當嘗試在 WHERE 子句中使用 NULL 值時務必小心。請注意 −

SELECT FIRST_NAME FROM TEST_TABLE WHERE age = ?

將 undef (NULL) 繫結到佔位符不會選擇具有 NULL age 的行!至少對於符合 SQL 標準的資料庫引擎是這樣。有關原因,請參閱你所用資料庫引擎的 SQL 手冊或任何 SQL 書籍。要顯式選擇 NULL 值,你必須說 "WHERE age IS NULL"。

一個常見問題是程式碼片段處理的值在執行時可能是定義的或未定義的(非 NULL 或 NULL)。一種簡單技術是根據需要準備適當的語句,並在非 NULL 情況下替換佔位符 −

$sql_clause = defined $age? "age = ?" : "age IS NULL";
$sth = $dbh->prepare(qq {
   SELECT FIRST_NAME FROM TEST_TABLE WHERE $sql_clause
});
$sth->execute(defined $age ? $age : ());

更新於:02-12-2019

801 瀏覽次數

啟動你的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.