0

我们有一个由 6 个“标题”标准组成的数据库表,我们需要匹配这些列的任意组合来检索详细数据。

我们不知道底层数据库将具有哪些标准,因为 8 个标题列中的每一个都是可选的。

使用示例数据:-

+------------+-----------+-----------+-----+---------+--------------+--------+
| First Name | Last Name | Home Town | Age |  Gender |    Skill     | Salary |
+------------+-----------+-----------+-----+---------+--------------+--------+
| James      | Smith     | New York  | 30  | Male    | Train Driver |  30000 |
| Pete       | Jones     | ?         | 30  | Male    | ?            |  35000 |
| ?          | Smith     | New York  | ?   | Male    | ?            |  75000 |
| ?          | ?         | ?         | 30  | ?       | ?            |  30000 |
+------------+-----------+-----------+-----+---------+--------------+--------+

当我们想找到薪水时,我们可以指定:-

First Name = James
Last Name = Smith
Home Town = New York
Age = 30
Gender = Male
Skill = Train Driver

使用此标准,我们期望返回第 1、第 3 和第 4 行。

除了迭代地使用所有不同组合的标准之外,有没有一种巧妙的方法来做到这一点?!

提前谢谢了。

4

1 回答 1

0

在 mysql 中我会使用 IFNULL() (我认为在 sql server 中有一个等效的 NVL() 方法)

例如

在您的 where 查询中:

其中 IFNULL(row.FirstName, "James") == "James" 和 IFNULL(row.LastName, "Smith") 和..

更好的是使用 OR(即检查名字匹配或 row.firstname 为空)

于 2013-05-21T08:54:59.223 回答