0

我正在使用 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 是文本框的默认值。

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')
4

1 回答 1

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中的主要原因- 并且还意味着您可以使用适当的数据类型(在必要时),而不是总是将事物视为字符串. (然而,在这种情况下,一切似乎都是一个字符串)。

于 2012-12-31T13:50:08.913 回答