0

我有 4 个带有值的组合框,也可能是通配符“%”。如您所知,不会返回 NULL 值。

我使用了(COLUMN_NAME LIKE 'VALUE' OR COLUMN_NAME IS NULL),它以某种方式起作用,但这不是我需要的。例如,在这种情况下,我需要返回 NULL 值:

NAME = '%'
LASTNAME = '%'
ZIPCODE = '12345'
EMAIL = '%'

基本上,我希望它返回所有邮政编码,如“12345”以及其他 3 个(姓名、姓氏、电子邮件)的空值。

不知道我是否清楚:(

如果我不是,请告诉我,

我怎样才能做到这一点?提前致谢。

4

3 回答 3

2

use LIKE operator in your SQL statements. According to your database, use NVL,ISNULL,IFNULL.

Oracle; NVL(NAME,' ') LIKE '%'
MSSQL; ISNULL(LASTNAME,' ') LIKE '%'
MySQL; IFNULL(EMAIL,' ') LIKE '%'

And use prepared statements. Do not build your SQL statements with merging string values. Prevent SQL injection.

于 2013-03-18T21:19:51.310 回答
1

如果您不关心值是什么,也不关心它是否null存在,那么甚至不要在 where 子句中包含该列:

where zipcode = '12345'

另外,我猜您的 '%' 值是用户选择不按该值搜索的结果。我会在你的程序中用不同的方式表示,可能是一个 Javanull或一个空字符串“”,所以 '%' 仍然可能意味着更接近它在 SQL“like” where 子句片段中的含义——除null.

于 2013-03-18T20:43:28.373 回答
0

这是你想要的 -

    (lastname_col like :lastname or :lastname = '%' ) and 
    (zipcode_col like :zipcode or :zipcode = '%' ) and  
    and so on

即使 :zipCode 为 '12345' 并且其余值为空,上面的 sql 也应该为您提供结果。

于 2013-03-18T20:52:54.620 回答