列中的MYSQL空值被视为通配符

时间:2016-09-13 20:15:22

标签: java mysql

我有应用程序,其中有几个关键列,但有些可能是空白的。如果单元格为空,我不确定如何选择数据以匹配任何内容,例如 -

    Col1 | Col2 | Col3 | Col4
    ---------------------------
    red  | 100  | ABC  | RES1
    Blue |      | QWE  | RES2
         | 222  |      | RES3
    org  | 345  |      | RES4

现在我需要选择这样的行($ xxx是var,目前不是语言特定的) -

SELECT * FROM tbl WHERE Col1=$var1 AND Col2=$var2 AND Col3=$var3

然后如果我设置var1 = yel,var2 = 222,var3 = KJH我需要结果为RES3

或者另一个例子,var1 = org,var2 = 345,var3 = BNM我需要结果为RES4

但如果我选择va1 = red,var2 = 333,var3 = ABC我需要0结果

基本上行中的空格需要是一个匹配任何东西的通配符,这需要很快,我只能使用一个Select语句,这是可能的还是我必须重新考虑事情?谢谢!

2 个答案:

答案 0 :(得分:0)

在OR中检查是否为空

SELECT * 
FROM tbl 
WHERE (Col1=$var1 or col1 is null)  
AND ( Col2=$var2 or col2 is null)
AND ( Col3=$var3 or col3 is null)

(不是特定语言)

答案 1 :(得分:0)

假设使用预备语句(使用Java):

SELECT Col4
    FROM tbl
    WHERE (Col1=? OR Col1 IS NULL)
        AND (Col2=? OR Col2 IS NULL)
        AND (Col3=? OR Col3 IS NULL);