2010-03-14 47 views
2

我會做這樣的事情:SQLite的 - SQL問題101

  1. select * from cars_table where body not equal to null
  2. select * from cars_table where values not equal to null And id = "3"

我知道「不等於」語法是<>,但我得到一個空的結果。

對於第二部分,我想獲得一個結果集,它只返回具有值的列。所以,如果該值爲空,則不要包含該列。

感謝

回答

2

不能使用相等運算符爲空,則必須使用is nullis not null

所以,你的第一個查詢將是:

select * from cars_table where body is not null; 

有沒有容易的方式做你的第二個操作(這還不包括空列)。我假設你的意思是,如果所有行對於該列都有NULL,則不顯示列,因爲在逐行基礎上執行此操作更加困難。 select語句期望顯示一列列表,並將忠實地顯示它們是否爲空。

想到的唯一可能性是一系列(每列一列)選擇並使用分組來確定該列是否只有空值,然後動態構建一個只包含不符合該條件的列的新查詢。

但是,這是非常混亂,並不適合於SQL - 也許如果你可以告訴我們的請求背後的理由,可能有另一種解決方案。

0

相較於NULL不與<>完成,但is nullis not null

select * 
from cars_table 
where body is not null 

和:

select * 
from cars_table 
where values is not null 
    and id = '3' 


NULL不是正常值,且必須處理與標準值不同。

+0

我想值來表示的列值 – qstar 2010-03-14 20:10:12

0

在SQL中,NULL是未知值。它不等於任何其他價值,也不等於任何其他價值。如果所比較的任一值爲NULL,則所有比較運算符(=,<>,<,>等)均返回false。 (我不知道你是幾歲,所以我不能說你是24歲,但我也不能說你不是24歲。)

如前所述,你必須使用IS NULLIS NOT NULL而不是測試NULL值。

0

謝謝大家的回答。

嗯,我有一堆列的表。 我要去搜索一輛特定的汽車,並獲得該汽車的價值......

車|手動|自動|轎車|動力制動器|噴氣發動機

honda | true | false | false | true |假

mazda | false | true | false | true |真正

所以,我想做的事 - > SELECT * FROM car_table其中汽車=「馬自達」和值不等於假

於是我只是遍歷遊標結果並填寫完表格與適當的列和值。其中值是列。我想我用替換值*爲列

我知道我能做到這一點編程,但想我可以這樣做只是通過SQL