where子句不起作用

时间:2012-12-31 13:45:36

标签: sql visual-studio-2010 where-clause

我正在使用visual studio2010,与asp.net合作。 我希望查询像示例一样工作,但我的工作不起作用!

我在数据库中有这些行:

Fullname=joe.address=earth,work=5656,home=23,mobile=55
Fullname=Michel.address=earth,work=5,home=2343,mobile=5435

用户只需输入:

Fullname=joe ,address=earth

程序应该返回第一行。 0是textBoxes的默认值。

SELECT fullName, address, work, home, mobile, registrationNo
  FROM contacts
 WHERE (fullName = @fullName OR fullName = '0')
   AND (address = @address OR address = '0')
   AND (work = @work OR work = '0')
   AND (home = @home OR home = '0')
   AND (mobile = @mobile OR mobile = '0')

1 个答案:

答案 0 :(得分:6)

当我认为您要检查参数时,您正在检查是否等于'0'

SELECT fullName, address, work, home, mobile, registrationNo
FROM   contacts
WHERE  (fullName = @fullName OR @fullName = '0')
AND    (address = @address   OR @address = '0')
AND    (work = @work         OR @work = '0')
AND    (home = @home         OR @home = '0')
AND    (mobile = @mobile     OR @mobile = '0')

正如评论中指出的那样,你真的应该使用 NULL 来表示缺少值 - 这是SQL中存在的主要原因 - 并且还意味着您可以使用适当的数据类型(必要时),而不是始终将事物视为字符串。 (但是,在这种情况下,一切看起来都是一个字符串)。