我有如下所示的行
ProductId ProductName ProductDesc ProductLoc
101 Camel Pencil B-10
102 Parker Pen
103 Mirado Pen C-10
当我执行以下SQL查询时
SELECT *
FROM tablename
WHERE productloc = NVL ('', productloc)
它给了我第1行和第3行,我想要实现的是如果productloc在SQL的where条件中为null,那么我应该得到所有三行。
如何获得所需的输出。
答案 0 :(得分:1)
尝试类似:
_pattern = @"[]!@#$%^&*()_+={}[\\|?/.><,~`]{" + minimChar + ",}";
^ ^ ^^
这里zzz是一些虚拟值,否则不应该在特定列中作为值存在。
答案 1 :(得分:1)
我想有三种不同的解决方案:
如果您想要所有行(productloc
为null且值为),您可以编写以下查询:
SELECT *
FROM tablename
没有WHERE
子句。
如果要提取所有productloc
的行具有指定值或为null,则可以编写以下查询:
SELECT *
FROM tablename
WHERE productloc IS NULL OR productloc = YOURVARIABLE
或(最后,不使用OR
条件)
SELECT *
FROM tablename
WHERE NVL(productloc, YOURVARIABLE) = YOURVARIABLE
答案 2 :(得分:1)
select * from tablename;
在这种情况下你需要的是因为你的位置没有效果。您将列与自身进行比较。
如果你想过滤并包含空值,你可以做(但可能用一些值替换一个productloc
:
select * from tablename where productloc = productloc or productloc is null;
或者:
select * from tablename where nvl(productloc, 'SOME_UNIQUE_VAL') = nvl(productloc, 'SOME_UNIQUE_VAL');
并将productloc
中的一个替换为某个值。
答案 3 :(得分:1)
我假设您使用的是Oracle。在Oracle中,“NULL”不是值,因此任何比较函数都将返回false。
我建议:
SELECT *
FROM tablename
WHERE (productloc = productloc OR productloc IS NULL)
希望它有所帮助,
塞尔吉奥