我正在使用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')
答案 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中存在的主要原因 - 并且还意味着您可以使用适当的数据类型(必要时),而不是始终将事物视为字符串。 (但是,在这种情况下,一切看起来都是一个字符串)。