我有4个包含值的组合框,也可以是通配符'%'。 如您所知,不返回NULL值。
我使用了(COLUMN_NAME LIKE'VALUE'或COLUMN_NAME IS NULL),它在某种程度上起作用,但它不是我需要的。 我需要的是返回NULL值,例如在这种情况下:
NAME = '%'
LASTNAME = '%'
ZIPCODE = '12345'
EMAIL = '%'
基本上,我想让它返回所有ZIPCODE,如'12345',以及其他3(NAME,LASTNAME,EMAIL)的空值。
不知道我是否清楚:(
如果我不是,请告诉我,
我怎么能做到这一点? 提前谢谢。
答案 0 :(得分:2)
在SQL语句中使用LIKE运算符。根据您的数据库,使用NVL,ISNULL,IFNULL。
<强>甲骨文; 强> NVL(NAME,'')喜欢'%' 的 MSSQL; 强> ISNULL(LASTNAME,'')喜欢'%' 的 MySQL的; 强> IFNULL(EMAIL,'')喜欢'%'
并使用准备好的陈述。不要使用合并字符串值构建SQL语句。防止SQL注入。
答案 1 :(得分:1)
如果您不关心值是什么,并且您不关心它是否为null
,那么甚至不要在where子句中包含该列:
where zipcode = '12345'
另外,我猜测你的'%'值来自用户选择不按该值搜索。我会在你的程序中用不同的方式表示,可能有一个Java null
或一个空字符串“”,这样'%'仍然可能意味着更接近它在SQL“like”where子句片段中的含义 - 除null
以外的任何值。
答案 2 :(得分:0)
这就是你要找的 -
(lastname_col like :lastname or :lastname = '%' ) and
(zipcode_col like :zipcode or :zipcode = '%' ) and
and so on
即使在以下情况下,上述sql也会给出结果:zipCode为'12345',其余值为null。