我会做这样的事情:
select * from cars_table where body not equal to null
。select * from cars_table where values not equal to null And id = "3"
我知道'not equal'的语法是<>
,但我得到的结果是空的。
对于第二部分,我想获得一个结果集,它只返回具有值的列。因此,如果值为null,则不包括该列。
由于
答案 0 :(得分:2)
您不能将等号运算符用于空值,您必须使用is null
和is not null
。
所以你的第一个查询是:
select * from cars_table where body is not null;
没有 easy 方法来执行第二次操作(排除null的列)。我假设您的意思是如果所有行都为该列的NULL,则不显示该列,因为在逐行的基础上执行此操作会更加困难。 select语句需要显示列的列表,并忠实地显示它们是否为空。
唯一可能的想法是一系列(每列一个)选择,并使用分组来确定列是否只有空值,然后动态构造一个只包含不符合该条件的列的新查询。
但这非常混乱,完全不适合SQL - 也许如果你能告诉我们请求背后的理由,可能会有另一种解决方案。
答案 1 :(得分:0)
NULL
未与<>
相比,is null
和is not null
与<{1}}相比:
select *
from cars_table
where body is not null
并且:
select *
from cars_table
where values is not null
and id = '3'
NULL不是正常值,必须以不同于标准值的方式处理。
答案 2 :(得分:0)
在SQL中,NULL
是未知值。它既不等于也不等于任何其他值。如果要比较的值中的任何一个是NULL
,则所有比较运算符(=,&lt;&gt;,&lt;,&gt;等)都返回false。 (我不知道你多大了,所以我不能说你是24岁,但我也不能说你不是24岁。)
如前所述,在测试IS NULL
值时,您必须使用IS NOT NULL
或NULL
。
答案 3 :(得分:0)
谢谢大家的回答。
好吧,我有一堆带有一堆列的表。 我将搜索一辆特定的汽车,并获得该车的价值......
汽车|手册|自动|轿车|动力制动器|喷气发动机 本田|是的|假|假|是的|假 马自达|假|是的|假|是的|真所以,我想做 - &gt; select * from car_table,其中car ='mazda'且值不等于false
然后我只是遍历游标结果并用适当的列和值填充表格。其中值是列。我想我用*代替值
我知道我可以通过编程方式进行,但我想我可以通过sql
来做到这一点