我有一个名为func getImageFromUrl(url: URL) -> UIImage {
var tempImage: UIImage? = nil
print("INSIDE URL -> \(url.absoluteString)")
URLSession.shared.dataTask(with: url) { (data, response, error) in
if error != nil {
print("Error on getImageFromUrl : \(error!.localizedDescription)")
return
}
print("Image data " + data.debugDescription)
DispatchQueue.main.async {
tempImage = UIImage(data: data!)!
print("TEMP IMAGE > \(String(describing: tempImage?.images![0]))")
}
}.resume()
if tempImage == nil {
print("IMAGE IS NIL!")
}
return tempImage!
}
的表。在此表中,我有pat_info
列,该列可以为空。当我编写此查询时:
id_number
它不检索任何东西,因为'adam'行在SELECT *
FROM pat_info
WHERE id_number = id_number
AND first_name = 'adam'
中不包含值
所以我需要检索'adam'行而不删除。
id_number
是必需的。
答案 0 :(得分:2)
最可能您不需要WHERE
子句。只需使用此:
SELECT *
FROM pat_info
WHERE first_name = 'adam';
您当前查询可能失败的原因是,如果id_number
恰好是NULL
,则检查id_number = id_number
将会失败,因为NULL
(在语义上是“不已知”)本身并不等同。
如果必须在WHERE
子句中包含该虚拟检查,则尝试使用WHERE 1 = 1
,即:
SELECT *
FROM pat_info
WHERE first_name = 'adam' AND 1 = 1;
答案 1 :(得分:1)
简单地说,如果您要检索的行中ID_NUMBER为NULL,那么如果在查询中指定ID_NUMBER = ID_NUMBER
,则将无法检索该行。这样做的原因是,在关系数据库中,NULL不会与任何值(包括NULL)“等于”比较。因此,如果ID_NUMBER为NULL,则测试ID_NUMBER = ID_NUMBER
与NULL = NULL
相同,并且它将永远不会返回TRUE。任何在比较两端都存在NULL的比较都将返回NULL。就是这样。
一种可能的解决方法是将查询重写为:
Select *
from pat_info
Where (id_number = id_number OR
ID_NUMBER IS NULL) and
first_name = 'adam'
以这种方式,至少在我看来,满足了在查询中使用ID_NUMBER = ID_NUMBER
的要求。
谢谢,@ TimBiegeleisen。 :-)
答案 2 :(得分:0)
您也可以使用LIKE,
SELECT *
FROM pat_info
WHERE '%'||id_number||'%' LIKE '%'||id_number||'%'
AND first_name = 'adam'
尽管,我不明白为什么要提出这种条件,
id_number = id_number