2016-07-17 37 views
0

我做了一个INNER在存储过程中加入,但我不知道该怎么把我的WHERE子句来过滤那些具有空值的列,只显示那些在特定列上不为空的行。我做的存储过程,但我不知道该怎么把我的WHERE子句来过滤空列

CREATE PROCEDURE [dbo].[25] 
@param1 int 
AS 
    SELECT c.Name, c.Age, c2.Name, c2.Country 
    FROM Cus C 
    INNER JOIN Cus2 C2 ON c.id = c2.id 
    WHERE c2.country is not null and c2.id = @param1 
    Order by c2.Country 
RETURN 0 

ID 1

+-----+----+---------+---------+ 
| QID | ID | Name | Country | 
+-----+----+---------+---------+ 
| 1 | 1 | Null | PH  | 
| 2 | 1 | Null | CN  | 
| 3 | 1 | Japhet | USA  | 
| 4 | 1 | Abegail | UK  | 
| 5 | 1 | Norlee | Ger  | 
+-----+----+---------+---------+ 

ID 2

+-----+----+----------+---------+ 
| QID | ID | Name | Country | 
+-----+----+----------+---------+ 
| 1 | 2 | Null  | PH  | 
| 2 | 2 | Null  | CN  | 
| 3 | 2 | Reynaldo | USA  | 
| 4 | 2 | Abegail | UK  | 
| 5 | 2 | Norlee | Ger  | 
+-----+----+----------+---------+ 

ID 3

+-----+----+----------+---------+ 
| QID | ID | Name | Country | 
+-----+----+----------+---------+ 
| 1 | 3 | Gab  | PH  | 
| 2 | 3 | Null  | CN  | 
| 3 | 3 | Reynaldo | USA  | 
| 4 | 3 | Abegail | UK  | 
| 5 | 3 | Norlee | Ger  | 
+-----+----+----------+---------+ 

我想,当我所选择的任何用户的在C表将显示C子表数据并删除空名称行并保留具有非空名称列的行。

所需的结果:

Ç表(父)

+----+---------+-----+ 
| ID | Name | Age | 
+----+---------+-----+ 
| 3 | Abegail | 31 | 
+----+---------+-----+ 

C2表(儿童)

+-----+----+----------+---------+ 
| QID | ID | Name | Country | 
+-----+----+----------+---------+ 
| 1 | 3 | Gab  | PH  | 
| 3 | 3 | Reynaldo | USA  | 
| 4 | 3 | Abegail | UK  | 
| 5 | 3 | Norlee | Ger  | 
+-----+----+----------+---------+ 

回答

0

解决方案1:试验不为空值

实施例:

WHERE yourcolumn IS NOT NULL 

解决方案2:在你的where子句(comparaison。减去空值)测试comparaison值

实例:

WHERE yourcolumn = value 
    WHERE yourcolumn <> value 
    WHERE yourcolumn in (value) 
    WHERE yourcolumn not in (value) 
    WHERE yourcolumn between value1 and value2 
    WHERE yourcolumn not between value1 and value2 
+0

WHERE yourcolumn <> value是我所需要的。感谢:D –

4

WHERE column IS NOT NULL是滤除NULL值的语法。

+0

它没有过滤掉空列。 –

+0

它确实是'NULL'还是只是一个包含''null''的标准文本字符串?如果是后者,你只需要比较'column <>'null'' – Aganju

+0

好的,先生。谢谢。我会再次尝试:d –